有没有办法删除Python中字符串中除字母之外的所有字符?
Posted
技术标签:
【中文标题】有没有办法删除Python中字符串中除字母之外的所有字符?【英文标题】:Is there a way to remove all characters except letters in a string in Python? 【发布时间】:2014-06-02 06:18:08 【问题描述】:我调用了一个函数,该函数返回包含从 ( 到 "、and 和数字的各种字符的代码。
有没有一种优雅的方法可以删除所有这些,所以我最终只剩下字母?
【问题讨论】:
嘿看看这个链接有人有类似的问题! ***.com/questions/12851791/… 为什么我的评论被删除了?我看到像 Jon Skeet 这样的人在这里询问类似的事情,这是有效的。 【参考方案1】:给定
s = '@#24A-09=wes()&8973o**_##me' # contains letters 'Awesome'
您可以使用生成器表达式过滤掉非字母字符:
result = ''.join(c for c in s if c.isalpha())
或者用filter
过滤:
result = ''.join(filter(str.isalpha, s))
或者您可以使用re.sub
将非字母替换为空格:
import re
result = re.sub(r'[^A-Za-z]', '', s)
【讨论】:
哇非常漂亮。我真的很喜欢 python 有这样优雅的解决方案。 请注意,isalpha
仅将 a-z 视为字母,而不是 e.g. å、ä、ö、ø、ñ、é 或 à【参考方案2】:
这是另一个,使用string.ascii_letters
>>> import string
>>> "".join(x for x in s if x in string.ascii_letters)
`
【讨论】:
【参考方案3】:使用 RegExes 的解决方案在这里非常简单:
import re
newstring = re.sub(r"[^a-zA-Z]+", "", string)
string
是您的字符串,newstring
是没有非字母字符的字符串。这样做是将每个不是字母的字符替换为空字符串,从而将其删除。但是请注意,RegEx 在这里可能有点矫枉过正。
更实用的方法是:
newstring = "".join(filter(str.isalpha, string))
不幸的是,您不能只在 filter
object 上调用 str
将其转换为字符串,这样看起来会更好...
走蟒蛇式的方式
newstring = "".join(c for c in string if c.isalpha())
【讨论】:
应该是re.sub
,re.replace
不存在。
你说的太对了,我实际上只是查了一下,因为我不确定 Python 库,但最终还是输入了错误的名称......【参考方案4】:
>>> import re
>>> string = "';''';;';1123123!@#!@#!#!$!sd sds2312313~~\"~s__"
>>> re.sub("[\W\d_]", "", string)
'sdsdss'
【讨论】:
这会留下下划线。 哦!是的,它留下了下划线。编辑了答案以删除下划线。【参考方案5】:您没有提到您只需要 英文 个字母,这是一个国际解决方案:
import unicodedata
str = u"hello, ѱϘяԼϷ!"
print ''.join(c for c in str if unicodedata.category(c).startswith('L'))
【讨论】:
【参考方案6】:s = '@#24A-09=wes()&8973o**_##me'
print(filter(str.isalpha, s))
# Awesome
关于filter
的返回值:
filter(function or None, sequence) -> list, tuple, or string
【讨论】:
【参考方案7】:好吧,我在这种情况下自己用这个
对不起,如果它已经过时:)
string = "The quick brown fox jumps over the lazy dog!"
alphabet = "abcdefghijklmnopqrstuvwxyz"
def letters_only(source):
result = ""
for i in source.lower():
if i in alphabet:
result += i
return result
print(letters_only(string))
【讨论】:
以上是关于有没有办法删除Python中字符串中除字母之外的所有字符?的主要内容,如果未能解决你的问题,请参考以下文章