【发布时间】:2019-11-21 08:34:30
【问题描述】:
我有一个包含特殊字符的字符串列表
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']
我希望从字符串列表中删除 (、) 和 , 等特殊字符
【问题讨论】:
-
也许你想要
map?list(map(lambda state: re.sub(r"\W+", " ", state[0]),state_list))? -
map没有帮助,列表中每一项的数据类型都是class 'sqlalchemy.util._collections.result'所以需要先转换成str才能使用re -
但是你显示了一个元组列表。试试
tuple(state)[0],list(map(lambda state: re.sub(r"\W+", " ", str(tuple(state)[0])),state_list)) -
当
unique_state_list打印在屏幕上时,unique_state_list = partnerTableSession.query(partnerTable.c.state).distinct().all()给了我一个类似[('Andhra Pradesh',), ('Karnataka',)]的列表。列表中每个元素的data type是class 'sqlalchemy.util._collections.result' -
重点是单独获取item。然后将其大小写为
str