2016-10-17 3 views
-1

У меня есть следующая строка, которая должна очиститьКак очистить строку, используя регулярное выражение питона

#import re 

addr="abcd&^fhj" 
problemchars = re.compile(r'[=\+/&<>;\'"\?%#[email protected]\,\. \t\r\n]') 
re.search(problemchars,addr) 
+1

Вы хотите удалить символы без алфавита? –

+0

@ Jean-FrançoisFabre да –

+1

что именно вы хотите достичь? – Harsha

ответ

1

В этом случае использование re.sub ищущего \W (не-alphanum) и заменить ничем.

import re 

addr="abcd&^fhj" 
print(re.sub("\W","",addr)) 

("\W+" тоже работает, но не уверен, что это будет более производительным)

1

вы можете использовать функцию фильтра, а если вы не хотите, чтобы пойти с регулярным выражением

line = "abcd&^fhj" 
line = filter(str.isalpha, line) 
print line # Change for python3 

Выход:

Редактировать: Для python 3 вы можете изменить инструкцию печати, такую ​​как это, так как функция filter возвращает итерабельность.

print(''.join(list(line))) 
+1

это приятный штрих. Пожалуйста, предоставьте совместимый с Python 3.x код: Я имею в виду 'line =" ".join (filter (str.isalpha, line))', потому что 'filter' не вернет строку, но итерабельную. –

Смежные вопросы