使用RegEx从Python字符串的开头删除所有非字母字符

时间:2014-11-29 07:08:00

标签: python string

我有各种单词列表,其中许多是嘈杂的。嘈杂,我的意思是它从一些非字母字符开始,如''',' - '。例如:“thisword,-thisword, - ”这个词,.thisword,可以是其他几个。

就像我们可以使用

删除ascii一样
from string import ascii letter
string.lstrip(ascii_letters)  

python中有没有类似的方法可以处理non_ascii而不使用正则表达式?

谢谢!

5 个答案:

答案 0 :(得分:3)

为什么不使用string.puctuation

>>> from string import punctuation
>>> "-asdf".lstrip(punctuation)
'asdf'
>>> "'asdf".lstrip(punctuation)
'asdf'
>>> '"asdf'.lstrip(punctuation)
'asdf'
>>> ',asdf'.lstrip(punctuation)
'asdf'

答案 1 :(得分:2)

只保留字词

中的字母
"".join([x for x in word if x.isalpha()])

答案 2 :(得分:2)

使用itertools.dropwhile

>>> def removes(s):
...     return "".join(itertools.dropwhile(lambda x:not x.isalnum(),s))
... 
>>> removes("---thisword")
'thisword'
>>> removes("-^--thisword")
'thisword'
>>> removes("thisword")
'thisword'
>>> removes("...thisword")
'thisword'

答案 3 :(得分:1)

否定字符集:

>>> from string import ascii_letters
>>> non_letter = ''.join(set(map(chr, range(128))) - set(ascii_letters))
>>> s = '-hello'
>>> s.lstrip(non_letter)
'hello'

答案 4 :(得分:0)

我建议使用while循环修剪每个字符串,直到它击中ascii。将非asciis加载到列表中然后搜索,直到您点击ascii。将其实现为一个函数,以便您可以有效地抽象出任务。

希望有所帮助。