2016-04-15 128 views
-2

我通過一系列電子郵件地址進行迭代,發現輸入的數字不正確,即(a)而不是@。所以,我試圖用@代替(a)。我走到這一步,最好的是:在Python字符串中用'@'替換'(a)'

x = 'asdf(a)asdf.com' 
found = re.sub(r'\s(a)\s', '@', x.strip(), flags=re.IGNORECASE) 
print(found) 

然而,這只是簡單地打印原始輸入:

asdf(a)asdf.com 

我嘗試了一些正則表達式,但它不會工作。請幫忙!

給所有使用str.replace()方法的人建議。由於(a)是字符串的一部分,因此我必須將整個文檔作爲(列表)字符串讀取,然後遍歷它。就處理能力而言,我認爲這不是一個經濟的解決方案。此外,這些問題特別要求使用正則表達式而不是字符串方法。感謝您花時間回覆!

+0

是http://ideone.com/J9x23b好嗎? – rock321987

+1

'\ s'匹配空白字符。 – vaultah

+1

您需要轉義'('和')',因爲它們用於分組。 –

回答

1

試着改變你的模式:

re.sub(r'\(a\)', '@', x.strip(), flags=re.IGNORECASE) 

但你不應該是垃圾郵件的人擺在首位;)

+0

哈哈,好的。它看起來像害怕垃圾郵件發送者的人使用的那種混淆。手動輸入,未經驗證的數據可以很「樂」地使用。 –

1

Python代碼

x = 'asdf(a)asdf.com' 
found = re.sub(r'\(a\)', '@', x.strip(), flags=re.IGNORECASE) 
print(found) 

Ideone Demo

4

使用內置str.replace方法。

a = 'asd(a)bcd.com` 
b = a.replace('(a)','@')