我是python的新手,想知道是否有与string.translate()的相反 我想将我的函数传递给一个长字符串,但是只能保留字母表中的字母并过滤掉其余的字母! (注意我很可能需要将我需要的内容扩展为逗号和句点,因此任何预先构建的过滤方法都会有所帮助!)
更新
我有一个暴力版本,但这是非常不受欢迎的
def filterFunction(text):
text.split
filteredtext=([elem for elem in text if elem.isalpha()==True or elem==","or elem=="."or elem==" "])
print filteredtext
return filteredtext
答案 0 :(得分:1)
您可以使用正则表达式。
import re
myString = re.sub("[^a-zA-Z]", "", myString)
如果您想保留空格,只需将正则表达式更改为:
myString = re.sub("[^a-zA-Z ]", "", myString)
答案 1 :(得分:1)
您可以按照其他答案中的建议使用正则表达式,也可以自己循环使用字符。
您可以使用string.isalpha
方法检查字符是否为字母
myString = filter(lambda char: char.isalpha(), myString)
虽然在python3
中你需要不同,因为过滤器返回一个迭代器
myString = ''.join(list(filter(lambda char: char.isalpha(), myString)))
或简单列表理解
myString = ''.join([char for char in myString if char.isalpha()])
答案 2 :(得分:0)
我建议使用列表理解的解决方案。
DoFoo
答案 3 :(得分:0)
简单的生成器理解和str.join方法:
tested_str = "s12jf#@GDVC2"
expected = "sjfGDVC"
result = ''.join(c for c in tested_str if c.isalpha())
assert result == expected