2016-04-15 2 views
-2

Я повторяю список адресов электронной почты и обнаружил, что число было введено неправильно, то есть (a) вместо @. Итак, я пытаюсь заменить (a) на @. Лучшее, что я получил до сих пор:Заменить '(a)' на '@' в строке python

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

Ха-ха, ладно. Похоже, что это путаница, используемая людьми, которые боятся спамеров. Вручную вводить, неутвержденные данные могут быть «забавными» для работы. –

4

Используйте встроенные str.replace метод.

a = 'asd(a)bcd.com` 
b = a.replace('(a)','@') 
Смежные вопросы