我从Web API中检索一些数据,但检索到的记录附带了需要删除的额外引号; result = ['"A1","Location1"', '"A2","Location2"']
什么是为大型数据集这样做的最有效的方法,说10000个项目,使我最终是这样的:建于CSV module从python列表中删除额外的引号
result = ["A1","Location1", "A2","Location2"]
我从Web API中检索一些数据,但检索到的记录附带了需要删除的额外引号; result = ['"A1","Location1"', '"A2","Location2"']
什么是为大型数据集这样做的最有效的方法,说10000个项目,使我最终是这样的:建于CSV module从python列表中删除额外的引号
result = ["A1","Location1", "A2","Location2"]
如果列表result
的每一个项目是一个以逗号分隔的“引用”子项(不包含子项中的逗号)的字符串,就可以很容易地使一个新的列表clean
如下:
clean = []
for item in result:
subitems = item.split(',')
clean.extend(si[1:-1] for si in subitems)
如果你的约束更复杂(引号可能会或可能不会包含eadh子项目,引用的子项目可能包含逗号等,等等 - 我不能盲目猜测每个详细的约束你没有让我们知道! - )任务会比例更难,也许涉及正则表达式,或更糟......但我们不知道,除非你编辑你的Q来指定非常的正是,究竟,你必须处理 - )
使用Python的。它自动执行此操作。
精心制作?详情?我找不到那些没有更多代码的东西。 – 2015-03-19 03:35:44
由csv模块导入的数据可以输入到列表中,其中元素以逗号分隔,并给出您想要的结果。 – ajdigregorio 2015-03-19 03:39:45
另一个不是很大(有点脏),但工作的解决方案是使用ast.literal_eval
与repr
:
from ast import literal_eval
result = ['"A1","Location1"', '"A2","Location2"']
literal_eval(repr(result).replace("\'", ""))
['A1', 'Location1', 'A2', 'Location2']
请问项目的每一个有额外的报价? – 2015-03-19 03:32:27
是的。 '[''A1','Location1',''A2','Location2'''] – DevEx 2015-03-19 03:33:24
根据您的描述,您的问题有点不清楚。在你的例子中,'result'列表最初包含两个项目,“A1”,“Location1”,“和”A2“,”Location2“”。在你的输出中,它包含四个,“A1”,“Location1”,“A2”和“Location2”。这不仅仅是删除字符,还会分割字符串。这是你的意思吗? – aruisdante 2015-03-19 03:34:18