use*_*999 3 python list character python-3.x
我有一个列表,其中的元素在每个字符串的开头或结尾都有不必要的(非字母数字)字符.
防爆.
'cats--'
Run Code Online (Sandbox Code Playgroud)
我想摆脱 -
我试过了:
for i in thelist:
newlist.append(i.strip('\W'))
Run Code Online (Sandbox Code Playgroud)
那没用.有什么建议.
def strip_nonalnum(word):
if not word:
return word # nothing to strip
for start, c in enumerate(word):
if c.isalnum():
break
for end, c in enumerate(word[::-1]):
if c.isalnum():
break
return word[start:len(word) - end]
print([strip_nonalnum(s) for s in thelist])
Run Code Online (Sandbox Code Playgroud)
要么
import re
def strip_nonalnum_re(word):
return re.sub(r"^\W+|\W+$", "", word)
Run Code Online (Sandbox Code Playgroud)
_要从两端删除除字母、数字之外的一个或多个字符,您可以使用
re.sub(r'^\W+|\W+$', '', '??cats--') # => cats
Run Code Online (Sandbox Code Playgroud)
或者,如果_也要删除,则包装\W到字符类中并_在其中添加:
re.sub(r'^[\W_]+|[\W_]+$', '', '_??cats--_')
Run Code Online (Sandbox Code Playgroud)
请参阅Python 演示:
import re
print( re.sub(r'^\W+|\W+$', '', '??cats--') ) # => cats
print( re.sub(r'^[\W_]+|[\W_]+$', '', '_??cats--_') ) # => cats
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式。该方法re.sub()将采用三个参数:
代码:
import re
s = 'cats--'
output = re.sub("[^\\w]", "", s)
print output
Run Code Online (Sandbox Code Playgroud)
解释:
"\\w"匹配任何字母数字字符。[^x]将匹配任何不是的字符 x