Python 当与过滤器一起使用时,正则表达式sub不工作
我有一个包含特殊字符的字符串列表Python 当与过滤器一起使用时,正则表达式sub不工作,python,regex,filter,Python,Regex,Filter,我有一个包含特殊字符的字符串列表 state_list=[('Andhra Pradesh',),('Karnataka',)] 像这样很好用 for state in state_list: print(re.sub(r'\W+'," ",str(state))) 输出 安得拉邦 卡纳塔克邦 当我使用过滤器来做这件事时 list(filter(lambda state: re.sub(r"\W+", " ", str(sta
state_list=[('Andhra Pradesh',),('Karnataka',)]
像这样很好用
for state in state_list:
print(re.sub(r'\W+'," ",str(state)))
输出
安得拉邦
卡纳塔克邦
当我使用过滤器来做这件事时
list(filter(lambda state: re.sub(r"\W+", " ", str(state)),state_list))
它不起作用!
我把名单原封不动地拿回来了
[('Andhra Pradesh',),('Karnataka',)]
我期待着这样的清单
['Andhra Pradesh','Karnataka']
我希望从字符串列表中删除像(
,)
和,
这样的特殊字符。sub()不执行重叠替换。您需要自己的循环,这就是为什么它在第一种情况下使用for循环有效
清单理解将是实现这一目标的理想方式:
[state[0] for state in state_list]
输出:
['Andhra Pradesh', 'Karnataka']
也许你想要
地图
<代码>列表(map(lambda state:re.sub(r“\W+”,“”,state[0]),state\u list))?map
没有帮助,列表中每个项目的数据类型都是class'sqlalchemy.util.\u collections.result'
所以需要先将其转换为str
才能使用re
,但您显示了一个元组列表。请尝试tuple(state)[0]
,list(map(lambda state:re.sub(r“\W+”,“”,str(tuple(state)[0])),state\u list))
unique\u state\u list=partnerTableSession.query(partnerTable.c.state).distinct()。all()
为我提供了一个类似[('Andhra Pradesh',),('Karnataka',)]
当屏幕上打印唯一状态列表时<列表中每个元素的代码>数据类型是类'sqlalchemy.util.\u collections.result'
重点是分别获取项目。然后将其大小写为str