2016-04-15 103 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)','@')