在Django中从字符串中删除特殊字符
我想把电子邮件中的所有特殊字符,比如'@'和'.',都去掉,换成'_'(下划线)。在Python里有一些函数,比如unidecode,但它不能完全满足我的需求。有没有人能给我一些建议,让我可以在字符串中找到这些字符,并把它们替换成'_'呢?
谢谢!
3 个回答
1
把这个当作一个指南:
import re
a = re.sub(u'[@]', '"', a)
语法:
re.sub(pattern, repl, string, max=0)
1
这是来自《Python Cookbook》第2版的一个很棒的例子。
import string
def translator(frm='', to='', delete='', keep=None):
if len(to) == 1:
to = to * len(frm)
trans = string.maketrans(frm, to)
if keep is not None:
allchars = string.maketrans('', '')
delete = allchars.translate(allchars, keep.translate(allchars, delete))
def translate(s):
return s.translate(trans, delete)
return translate
remove_cruft = translator(frm="@-._", to="~")
print remove_cruft("me-and_you@gmail.com")
输出结果:
me~and~you~gmail~com
这是一个很实用的字符串工具,可以放在你的工具箱里。
所有的荣誉归于这本书。
5
为什么不使用 .replace()
呢?
比如说:
a='testemail@email.com'
a.replace('@','_')
'testemail_email.com'
如果你想同时修改多个地方,你可以试试这样做:
a='testemail@email.com'
replace=['@','.']
for i in replace:
a=a.replace(i,'_')