2016-02-29 124 views
2

我试图编辑一个包含4百万行数据的19列CSV文件。有两列(第三和第四)列出了个人的姓名,他们的名字列出的方式是“姓氏,名字”。使用Python 3.5从CSV文件中的仅两列删除特定字符

C00431445,"P80003338","Obama, Barack","DUCLOS, DUNCAN","CHICAGO","IL","606601303","OBAMA FOR AMERICA","ACCOUNTING MANAGER",77.65,08-AUG-08,"","","","SA17A","753821","5433431","P2008", 

这是问题,因为当我尝试使用逗号分隔符文件上传到MySQL,它在半分割这2列的名字。我想使用Python 3.5来选择这两列,并且只从其中删除逗号,而不删除其他行中的逗号。

当谈到编码和任何帮助时,我都是新手。我知道可以使用.split()拆分这些列,然后将它们合并为无逗号,但是我想要一个更清晰的方法,它将直接从该文件中删除逗号。

+1

这看起来有效CSV ,你用什么工具将数据加载到MySQL中? – hruske

+0

不完全确定“什么工具”的含义,我使用SQL查询来创建,修改我的表以添加一个自动递增主键,然后查询它只是为了发现我的数据沿着名称分裂,因为名字和姓氏用逗号分隔。我会附上我的查询,但评论部分没有足够的空间,显然。 – dataelephant

回答

0

使用CSV模块的读写

import csv 

f = open('file.csv', 'rb') 
reader = csv.reader(f) 
your_list = list(reader) 


f = open('file.csv', 'wb') 
writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) 

for line in your_list: 
    line[2] = line[2].replace(",","") 
    line[3] = line[3].replace(",","") 
    writer.writerow(line) 
+0

谢谢,经过更多的研究,我意识到CSV模块可能是我找出这个问题的最好方法。 – dataelephant

0

在MySQL中,读入列@variables,然后操纵他们为您将它们保存到实际的列:

LOAD DATA ... 
    (id1, id2, @name1, @name2, ...), 
    SET name1 = REPLACE(@name1, ',', ''), 
     name2 = REPLACE(@name2, ',', ''); 
相关问题