我有一个带坐标和地震震级的.txt文件。我只需要提取3列(纬度,经度和幅度),但numpy模块中的loadtxt不起作用。我想将txt文件转换为csv文件,看看我是否可以提取我需要的数据......这就是我现在所拥有的。它返回一个.csv文件,每个字符作为单独的行打印。
import csv
s = open('Sismos_24_4_17.txt',"r").read()
print(s)
sc = open('Sismos_24_4_17.csv',"rt")
in_txt = csv.reader(s, delimiter = '\t')
out_csv = csv.writer(open('Sismos_24_4_17.csv',"wt"))
out_csv.writerows([in_txt])
print(sc.read())
以下是.txt文件的几行:
Local Fecha Latitud Longitud Profundidad Magnitud Referencia
24/04/2017 20:58:01 24/04/2017 23:58:01 -33.307 -71.769 20.6 4.3 Ml GUC 19 km al NO de El Tabo
24/04/2017 20:54:45 24/04/2017 23:54:45 -33.292 -71.934 28.4 4.6 Mw GUC 31 km al NO de El Tabo
24/04/2017 20:47:29 24/04/2017 23:47:29 -32.985 -72.008 25.8 3.2 Ml GUC 37 km al O de Valparaíso
以下是我的代码创建的.csv文件的几行:
['L'],['o'],['c'],['a'],['l'],"['', '']",['F'],['e'],['c'],['h'],['a'],"['', '']",['L'],['a'],['t'],['i'],['t'],['u'],['d'],"['', '']","['', '']",['L'],['o'],['n'],['g'],['i'],['t'],['u'],['d'],"['', '']",['P'],['r'],['o'],['f'],['u'],['n'],['d'],['i'],['d'],['a'],['d'],"['', '']",['M'],['a'],['g'],['n'],['i'],['t'],['u'],['d'],"['', '']",['R'],['e'],['f'],['e'],['r'],['e'],['n'],['c'],['i'],['a'],[],['2'],['4'],['/'],['0'],['4'],['/'],['2'],['0'],['1'],['7'],[' '],['2'],['0'],[':'],['5'],['8'],[':'],['0'],['1'],"['', '']",['2'],['4'],['/'],['0'],['4'],['/'],['2'],['0'],['1'],['7'],[' '],['2'],['3'],[':'],['5'],['8'],[':'],['0'],['1']
如何用逗号分隔每个元素?
答案 0 :(得分:1)
你没有像你应该那样提取前3列。我建议迭代输入中的每一行,并同时写入外部文件。您可以使用with...as
上下文管理器轻松完成此任务。
with open('Sismos_24_4_17.csv', "rt") as i, open('Sismos_24_4_17_2.csv', "wt") as o:
r = csv.reader(i, delimiter='\t')
w = csv.writer(o)
for row in r:
w.writerow(row[:3])
此外,您应该将输出写入具有不同名称的单独文件。
答案 1 :(得分:0)
您应该在csv.reader中添加引号。我不知道为什么,但是当我第一次通过csv模块读取文件时,在csv.reader中添加引号后,我也遇到了同样的情况
in_txt = csv.reader(s, delimiter = '\t', quoting=csv.QUOTE_NONE)
out_csv = csv.writer(open('Sismos_24_4_17.csv',"wt"), quoting=csv.QUOTE_NONE)
为我工作过的尝试尝试检查man page for csv library