清单上的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与任何非单词字符匹配。