【发布时间】:2019-09-12 15:35:26
【问题描述】:
我有一个这样的字符串列表:
ls = ['3395', 'test', '"city ', 'state"']
我需要搜索它以找到带有引号的字段,以便我可以将这些字段合并在一起。基本上,我想要的列表是:
ls_i_want = ['3395', 'test', '"city, state"']
我有以下代码基本上可以实现这一点:
ls[2:4] = [''.join(ls[2:4])]
并返回列表:
['3395', 'test', '"city state"']
这个输出实际上很好,但我苦苦挣扎的是引号的位置是可变的;它并不总是在索引 2 处,但结束引号将始终为 +2。我正在尝试沿着这段代码的路径工作:
for i, j in enumerate(ls):
if '"' in j:
ls[i:i+2] = ''.join(ls[i:i+2])
但返回列表:
['3395', 'test', '"', 'c', 'i', 't', 'y',' ', 's', 't', 'a', 't', 'e', '"']
我哪里错了?我不应该使用枚举吗?
【问题讨论】:
-
您是否在尝试解析
csv文件? -
您忘记在第二个 sn-p 中在
''.join(...)周围添加方括号。 -
我宁愿不要。就我而言,这只是一个错字。
-
我认为您还必须遍历列表的副本,因为在合并 2 个元素后,您的索引将减少 1。
-
看起来您已经拆分了
csv文件的内容。您可以使用csv模块,它会自动处理包含逗号的引号字符串。