2013-03-08 3 views
0

У меня есть строка, как это:Как удалить определенные символы из текста с помощью python?

строки = «Это мой текст 2013-02-11, & он содержал символы, как это! (Исключительно) '

Это символы, которые я хочу удалить из моей строки.

!, @, #, %, ^, &, *, (,), _, +, =, `,/

То, что я попытался это:

listofsymbols = ['!', '@', '#', '%', '^', '&', '*', '(', ')', '_', '+', '=', '`', '/'] 
exceptionals = set(chr(e) for e in listofsymbols) 
string.translate(None,exceptionals) 

Ошибка:

целое требуется

Пожалуйста, помогите мне сделать это!

+1

http://stackoverflow.com/questions/3939361/remove-specific-characters-from-a-string- in-python это может быть полезно! –

+0

@ dda, Спасибо за редактирование :) – MHS

ответ

7

Попробуйте

>>> my_str = 'This is my text of 2013-02-11, & it contained characters like this! (Exceptional)' 
>>> my_str.translate(None, '[email protected]#%^&*()_+=`/') 
This is my text of 2013-02-11, it contained characters like this Exceptional 

Кроме того, пожалуйста, воздержитесь от имен переменных, которые уже встроены в именах или части стандартной библиотеки.

3

Как насчет этого? Я также переименовал string в s, чтобы избежать путаницы со встроенным модулем string.

>>> s = 'This is my text of 2013-02-11, & it contained characters like this! (Exceptional)' 
>>> listofsymbols = ['!', '@', '#', '%', '^', '&', '*', '(', ')', '_', '+', '=', '`', '/'] 
>>> print ''.join([i for i in s if i not in listofsymbols]) 
This is my text of 2013-02-11, it contained characters like this Exceptional 
+0

Я бы предложил что-то подобное; два второстепенных момента: имя «listofsymbols» можно было бы заострить до «filterymbols», а обозначение списка немного неуклюже, так как работает простая строка. – guidot

+0

@guidot. Во-первых, имена не имеют значения (за исключением смешения со встроенными функциями). И строки неизменны, так как бы вы сделали свое второе предложение? – TerryA

+0

filtersymbols IS непреложный (нотация строк также предотвращает ошибки типа «@» вместо «@»), поскольку используется только для поиска; и хотя имена не имеют значения для компиляторов, которые они делают для людей. – guidot

0

Другое предложение, легко расширяется до более сложных критериев фильтрации или другого типа входных данных:

from itertools import ifilter 

def isValid(c): return c not in "[email protected]#%^&*()_+=`/" 

print "".join(ifilter(isValid, my_string))