我想从电子邮件中删除所有特殊字符,例如“@”、“。” 并用'下划线'替换它们,在 python ' unidecode '中有一些功能,但它不能完全满足我的要求。谁能给我一些建议,以便我可以在字符串中找到上述字符并将它们替换为“下划线”。
谢谢。
为什么不使用.replace()
?
例如。
a='testemail@email.com'
a.replace('@','_')
'testemail_email.com'
并编辑多个你可能会做这样的事情
a='testemail@email.com'
replace=['@','.']
for i in replace:
a=a.replace(i,'_')
以此为指导:
import re
a = re.sub(u'[@]', '"', a)
句法:
re.sub(pattern, repl, string, max=0)
Python Cookbook 2nd edition 的好例子
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
一个很棒的字符串工具,可以放入您的工具包中。
这本书的所有功劳