清单上的re.sub-python 3
问题内容:
我有一个清单,尝试在其中使用循环删除特殊字符。当我尝试不带循环删除那些特殊字符时,它起作用了。但是循环并没有用,但是却运行了(我也不知道怎么做)。这些特殊字符为:“
[”和“]”。这可能很简单,或者具有列表推导功能,我尝试了一些但没有很好的工作(如何在Python的列表推导中使用正则表达式?)
你能帮忙吗?我是Python的新手,但这会有所帮助。请分享您的知识!
输出应为:[‘1’,‘2’]
我的代码:
import re
# Case 1 : Sub with no loop
w = '[ 1,2,3,4 ]'
outer= re.compile("\[(.+)\]")
m = outer.search(w)
inner_str = m.group(1)
# Case 2 - Sub with loop
x = [ '[1]', '[2]' ]
for item in x:
if item == re.match('\[(.+)\]', item):
print(re.sub("\[(.+)\]", "", item))
问题答案:
您可以使用列表理解来做到这一点,您的意思是这样的吗?
>>> import re
>>> x = [ '[1]', '[2]' ]
>>> [re.sub(r'\W', '', i) for i in x]
['1', '2']
令牌\W
与任何非单词字符匹配。