我有很多的tsv文件,我想把它们一个一个地读出来,并把最后一列写到其他文件中。
以下是我的代码:
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])
大多数情况下,它工作得很完美。但问题是,一些线路交错在一起。例如,行变量获得更多的几行连接在一起,所以它最终不仅最后一列被写入到文件中,而且下一行的列。它在几行之后就停止了--也不知道为什么。
我尝试过用其他几种方法(如pandas)读取这些文件,但得到了相同的结果。我还尝试打开输入文件并查看所有字符(notepad++),但所有行(包括有问题的行)都有 CR:LF。I知道输入文件有问题(输入文件已给出),但我想知道是否有任何方法可以解决它。
发布于 2018-06-17 04:45:41
看起来您的文件可能在双引号中嵌入了多行字段(但如果不查看数据就很难判断)。
尝试在open()
调用中添加newline=''
(也可以将quotechar='"'
添加到reader()
,但这可能是默认设置)。
从doc
如果未指定
newline=''
,则将无法正确解释嵌入在带引号的字段中的换行符
或者情况正好相反,也许您需要关闭引号才能正确解析这些文件。
https://stackoverflow.com/questions/50889248
复制相似问题