2015-03-19 165 views
0

我从Web API中检索一些数据,但检索到的记录附带了需要删除的额外引号; result = ['"A1","Location1"', '"A2","Location2"']什么是为大型数据集这样做的最有效的方法,说10000个项目,使我最终是这样的:建于CSV module从python列表中删除额外的引号

result = ["A1","Location1", "A2","Location2"] 
+0

请问项目的每一个有额外的报价? – 2015-03-19 03:32:27

+0

是的。 '[''A1','Location1',''A2','Location2'''] – DevEx 2015-03-19 03:33:24

+3

根据您的描述,您的问题有点不清楚。在你的例子中,'result'列表最初包含两个项目,“A1”,“Location1”,“和”A2“,”Location2“”。在你的输出中,它包含四个,“A1”,“Location1”,“A2”和“Location2”。这不仅仅是删除字符,还会分割字符串。这是你的意思吗? – aruisdante 2015-03-19 03:34:18

回答

7

如果列表result的每一个项目是一个以逗号分隔的“引用”子项(不包含子项中的逗号)的字符串,就可以很容易地使一个新的列表clean如下:

clean = [] 
for item in result: 
    subitems = item.split(',') 
    clean.extend(si[1:-1] for si in subitems) 

如果你的约束更复杂(引号可能会或可能不会包含eadh子项目,引用的子项目可能包含逗号等,等等 - 我不能盲目猜测每个详细的约束你没有让我们知道! - )任务会比例更难,也许涉及正则表达式,或更糟......但我们不知道,除非你编辑你的Q来指定非常的正是,究竟,你必须处理 - )

-1

使用Python的。它自动执行此操作。

+0

精心制作?详情?我找不到那些没有更多代码的东西。 – 2015-03-19 03:35:44

+0

由csv模块导入的数据可以输入到列表中,其中元素以逗号分隔,并给出您想要的结果。 – ajdigregorio 2015-03-19 03:39:45

0

另一个不是很大(有点脏),但工作的解决方案是使用ast.literal_evalrepr

from ast import literal_eval 

result = ['"A1","Location1"', '"A2","Location2"']  
literal_eval(repr(result).replace("\'", "")) 

['A1', 'Location1', 'A2', 'Location2']