我需要从单词的开头和结尾删除所有非字母字符,但如果它们出现在两个字母之间,请保留它们.
例如:
'123foo456' --> 'foo'
'2foo1c#BAR' --> 'foo1c#BAR'
Run Code Online (Sandbox Code Playgroud)
我尝试过使用re.sub(),但我无法编写正则表达式.
您可以使用str.strip:
In [1]: import string
In [4]: '123foo456'.strip(string.digits)
Out[4]: 'foo'
In [5]: '2foo1c#BAR'.strip(string.digits)
Out[5]: 'foo1c#BAR'
Run Code Online (Sandbox Code Playgroud)
正如马特在评论中指出的那样(谢谢,马特),这只会删除数字.要删除任何非字母字符,
用非字母定义你的意思:
In [22]: allchars = string.maketrans('', '')
In [23]: nonletter = allchars.translate(allchars, string.letters)
Run Code Online (Sandbox Code Playgroud)
然后剥离:
In [18]: '2foo1c#BAR'.strip(nonletter)
Out[18]: 'foo1c#BAR'
Run Code Online (Sandbox Code Playgroud)