如何用python解析tsv文件?

如何用python解析tsv文件?,python,csv,Python,Csv,我有一个tsv文件,其中包含一些换行符数据 111 222 333 "aaa" 444 555 666 "bb b" 第三行的b是第二行的换行符bb,因此它们是一个数据: 第一行的第四个值: aaa 第二行的第四个值: bb b 如果我在excel文件中使用Ctrl+C和Ctrl+V粘贴,效果会很好。但是如果我想使用python导入文件,如何解析 我试过: lines = [line.rstrip() for line in open(file.tsv)] for i in range(l

我有一个tsv文件,其中包含一些换行符数据

111 222 333 "aaa"
444 555 666 "bb
b"
第三行的
b
是第二行的换行符
bb
,因此它们是一个数据:

第一行的第四个值:

aaa
第二行的第四个值:

bb
b
如果我在excel文件中使用Ctrl+C和Ctrl+V粘贴,效果会很好。但是如果我想使用python导入文件,如何解析

我试过:

lines = [line.rstrip() for line in open(file.tsv)]
for i in range(len(lines)):
    value = re.split(r'\t', lines[i]))
但结果并不好:

我想:


换行符在.tsv/.csv的内容(单元格)中时,通常用引号括起来。否则,标准解析可能会将其混淆为下一行的开始。就你而言,这条线

for line in open(file.tsv)
自动使用换行符作为分隔符

如果您确定该文件只有4列,您可以简单地读取整个文本,根据tab将其拆分,然后一次拉出4个项目

# read the entire text and split it based on tab
old_data = open("file.tsv").read().split('\t')

# Now group them 4 at a time
# This simple list comprehension creates a for loop with step size = num. of columns
# It then creates sublists of size 4 (num. columns) and puts it into the new list
new_data = [old_data[i:i+4] for i in range(0, len(old_data), 4)]
理想情况下,您应该关闭可能在引号中包含换行符的内容。

只需使用。它知道CSV文件中所有可能的角点情况,如引用字段中的新行。它可以在选项卡上进行分隔

with open("file.tsv") as fd:
    rd = csv.reader(fd, delimiter="\t", quotechar='"')
    for row in rd:
        print(row)
将正确输出:

['111',222',333',aaa']
['444','555','666','bb\nb']

不确定您的意思:“第三行的b是bb的换行符”非常感谢。是的,实际数据是双引号。我已经编辑了这个主题。我会读你的方法,解释一下会有帮助的。但从我有限的知识来看,这似乎是一个很好的方法。还值得一提的是,如果文件中没有头,请添加header=None,否则它可能会使用第一行作为头
import scipy as sp
data = sp.genfromtxt("filename.tsv", delimiter="\t")
import pandas as pd
data = pd.read_csv ("file.tsv", sep = '\t')