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

Python 替换字符串中的所有非字母,python,string,Python,String,即替换所有数字、特殊字符、非打印字符。我不能用图书馆 然而,这并不能消除\;如何检查此项并将其替换为零?\中的字符无效 你应该保护\。使用\\只需在字符串上迭代并保留任何字母字符。您可以通过列表理解和连接来实现这一点 import string line = ''.join(c for c in line if c in string.ascii_letters) 尽管您可以使用isalpha更好地处理unicode字符串: 因此,带扬抑符的拉丁文小写字母O被保留,但٤阿拉伯文-印度文数字4被

即替换所有数字、特殊字符、非打印字符。我不能用图书馆


然而,这并不能消除\;如何检查此项并将其替换为零?\中的字符无效

你应该保护\。使用\\

只需在字符串上迭代并保留任何字母字符。您可以通过列表理解和连接来实现这一点

import string
line = ''.join(c for c in line if c in string.ascii_letters)
尽管您可以使用isalpha更好地处理unicode字符串:

因此,带扬抑符的拉丁文小写字母O被保留,但٤阿拉伯文-印度文数字4被保留,这似乎是正确的。

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

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

可能的重复为什么不能使用re库?这是一个标准的图书馆。这是家庭作业吗?你需要转义反斜杠,因为它通常用于转义其他字符:“\\\”此外,我认为删除\不是一个好主意,因为它可以保护一些特殊符号
>>> line = u'ABcdef124__++--()zyxôôô999٤end'
>>> print(''.join(c for c in line if c.isalpha()))
ABcdefzyxôôôend
>>> st='hsfjebhjbe283628362et#@%\\\\\\\\\\\\\\!!@$*)(|<>~\%^%@%^///;...][]=--]9988bjwqgvs'
>>> ''.join(i for i in st if i.isalpha())
'hsfjebhjbeetbjwqgvs'
>>> ''.join(i for i in st if i.isalnum())
'hsfjebhjbe283628362et9988bjwqgvs'