如何在python中将分隔的txt文件标记为csv

时间:2015-12-18 12:47:56

标签: python csv

我有一个7列和大约8000行的txt文件。 该文件的名称是“Azimuth”

第一行 - Id Xs Xe Ys Ye长度方位角

下面的每一行都是一个独特的测量。 所以这是一个包含8000次测量的txt文件。 数据是制表符分隔的,因此它似乎在文件本身中。

当我用Excel打开它时,它将它转换为列和行没有问题,但是当我尝试用python读取它时,它将整个文本作为一列读取。

我试图运行我发现的代码:

f=open("Azimuth.txt")
lines=f.readlines()
result=[]
for x in lines:
      result.append(x.split(' ')[0])
f.close()
print result

当我运行它时,它将整个txt文件打印为一个长行(或列,我不确定)。 我试图将它转换为csv文件,但用逗号分隔整个txt,而不是我所期望的。

任何人都可以帮忙吗? 我需要构建一个代码,该代码依赖于分隔为列和行的文件。

我不是程序员,所以我会提到我使用sublime编辑器并使用终端运行脚本(它工作正常,脚本以.py结尾,我使用了#!/ usr / bin / env python命令)

谢谢大家

1 个答案:

答案 0 :(得分:4)

使用csv模块,使用tab作为分隔符:

import csv
with open("Azimuth.txt") as f:
   rows = csv.reader(f, delimiter="\t")
   for row in rows:
      # do whatever

如果您想要列出所有行rows = list(csv.reader(f, delimiter="\t")),但您可以使用上面的逻辑一次迭代一行。你也永远不需要调用readlines(),除非你真的想要一个列表,在python中你可以迭代文件对象,所以如果你要手动解析,你可以:

with open("Azimuth.txt") as f:
  rows = [line.split("\t") for line in f]

或逐行:

 with open("Azimuth.txt") as f:
     for line in f:
       row = line.split("\t")
       # use row ...