re.sub on lists - 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匹配任何非单词字符。

假设您试图将内容保留在括号内,这有效:

import re
# Case 1 : no sub!
w = '[ 1,2,3,4 ]'
outer= re.compile("[(.+)]")
m = outer.search(w)
inner_str = m.group(1)
print(inner_str)
# Case 2 - no sub!
x = [ '[1]', '[2]' ]
y = []
for item in x:
    match = outer.match(item)
    if match:
        y.append(match.group(1))
print(y)

最新更新