首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表上的re.sub - python 3

列表上的re.sub - python 3
EN

Stack Overflow用户
提问于 2015-04-11 05:11:55
回答 2查看 16.7K关注 0票数 6

我有一个列表,我尝试使用循环删除其中的特殊字符。当我尝试在没有循环的情况下删除这些特殊的字符时,它起作用了。但循环不起作用,但确实运行了(我不知道是如何运行的)。这些特殊字符是:"“和"”。它可能是非常简单的东西,或者是list的理解,我试过一些,但不是很有效( How do you use a regex in a list comprehension in Python? )

你能帮忙吗?我是Python的新手,但它会有很大帮助。请分享你的知识!

输出应为:“%1”,“%2”

我的代码:

代码语言:javascript
运行
复制
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))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-11 05:17:25

你可以使用列表理解来做这件事,你的意思是这样的吗?

代码语言:javascript
运行
复制
>>> import re
>>> x = [ '[1]', '[2]' ]
>>> [re.sub(r'\W', '', i) for i in x]
['1', '2']

标记\W可以匹配任何非单词字符。

票数 15
EN

Stack Overflow用户

发布于 2015-04-11 05:20:05

假设你想把东西放在括号里,这是可行的:

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29570771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档