替换字符串中的所有非字母表

时间:2014-10-31 10:10:36

标签: python string

即替换所有数字,特殊字符,非打印字符。我无法使用re库。

line = line.rstrip() # this get rids of the white spaces
if character in string.digits or character in string.punctuation:
    line = line.replace(character, "")

但是,这并没有摆脱\;我怎样才能检查并更换它? character in "\"不起作用。

3 个答案:

答案 0 :(得分:3)

只需遍历字符串并保留任何字母字符。您可以使用列表推导和连接来完成此操作。

import string
line = ''.join(c for c in line if c in string.ascii_letters)

虽然您可以使用isalpha()更好地处理unicode字符串:

>>> line = u'ABcdef124__++--()zyxôôô999٤end'
>>> print(''.join(c for c in line if c.isalpha()))
ABcdefzyxôôôend

所以保留了ô(带有CIRCUMFLEX的拉丁语小写字母O),但٤(阿拉伯语 - 指示数字四)不是,这似乎是正确的。

答案 1 :(得分:1)

你应该保护“\”。使用“\\”

答案 2 :(得分:1)

只需使用str.isalpha()检查字符是否为字母:

>>> st='hsfjebhjbe283628362et#@%\\\\\\\\\\\\\\!!@$*)(|<>~\%^%@%^///;...][]=--]9988bjwqgvs'
>>> ''.join(i for i in st if i.isalpha())
'hsfjebhjbeetbjwqgvs'

使用字母数字str.isalnum()

>>> ''.join(i for i in st if i.isalnum())
'hsfjebhjbe283628362et9988bjwqgvs'