2013-02-07 164 views
1

我想從電子郵件中刪除所有特殊字符,如'@','。'並用'下劃線'替換它們 在python'unidecode'中有一些函數,但它不能完全滿足我的要求。任何人都可以給我一些建議,這樣我就可以在字符串中找到上述提及的字符,並用'下劃線'替換它們。從django中的字符串中刪除特殊字符

謝謝。

回答

3

爲什麼不使用.replace()

例如。

a='[email protected]' 
a.replace('@','_') 
'testemail_email.com' 

和編輯多你可能可以這樣做,從Python的食譜第2版此

a='[email protected]' 
replace=['@','.'] 
for i in replace: 
    a=a.replace(i,'_') 
+0

但替換隻需要兩個參數txt.replace('@','_')如果我想刪除多於一個字符,該怎麼辦 – Inforian

+0

@Inforian看看編輯 – Jonathan

+0

是的,它的工作原理,謝謝 – Inforian

1

以此爲指南:

import re 
a = re.sub(u'[@]', '"', a) 

語法:

re.sub(pattern, repl, string, max=0) 
+0

你好凱蒂,取而代之的是比子 – Jonathan

+0

感謝更快速和它的作品,但以相反的方式......它正在取代**[email protected]**到**「」」 「」@「」「」「。」「」** – Inforian

+1

看看[this](http://stackoverflow.com/questions/5668947/python-string-replace-vs-re-sub) – Jonathan

1

很好的例子

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("[email protected]") 

輸出:

me~and~you~gmail~com 

偉大string util放入你的工具包。

所有信貸the book

相關問題