在python中读取tsv文件

时间:2018-06-16 15:32:53

标签: python csv

我有很多tsv文件,我想逐一阅读它们,并将最后一个coloum写入其他文件。

这是我的代码:

for filename in os.listdir(path):
    with open(path+'/'+filename,'r',encoding="utf8") as tsvin, open('temptweets.csv','a',encoding='utf-8') as csvout:
        tsvin = csv.reader(tsvin, delimiter='\t')
        csvout = csv.writer(csvout)
        count = 0
        for row in tsvin:
            try:
                count = str(row[-1])
            except ValueError:
                pass  # w.e.
            if len(count) >= 0:
               csvout.writerow([count])

大部分工作都很完美。但问题在于,有些线路是互相干扰的。 即行变量让更多的行与之相关,因此最终不仅将最后一个coloum写入文件,而且 ALL 下一行的coloums。它在几行后停止 - 无法说明原因。

我尝试用其他一些方法(例如pandas)读取文件但得到了相同的结果。 我还尝试打开输入文件并查看所有字符(记事本++),但所有行(包括问题行) DO HAVE CR:LF。 我知道输入文件有问题(给出了输入文件),但我想知道是否有办法解决它。

1 个答案:

答案 0 :(得分:1)

看起来你的文件可能有多行字段嵌入双引号中(但是如果不查看数据就很难分辨)。

尝试在newline=''电话中添加open()(并可能将quotechar='"'添加到reader(),但这可能是默认设置。

来自doc

  

如果未指定newline='',则在引用字段中嵌入换行符   将无法正确解释

或者它可能相反,也许你需要关闭引用来正确解析这些文件..