如何处理引号不均匀的 .tsv?

Bef*_*all 1 python csv

我对使用Python的csv模块很陌生,并且由于缺少转义字符和奇怪的数据,我不断遇到无法解析的问题。以下是导致它抓取多行并中断(制表符分隔值)的两个示例:

B 2885192“一些输入

L 30019”

这两个示例都破坏了它并得到“无转义字符集”错误。这是我用来阅读它的主线:

with open (INFO_FILE, "rt", encoding = "latin1") as info:
    info = csv.reader (info, delimiter = '\t')
Run Code Online (Sandbox Code Playgroud)

我找不到可靠的答案,也无法在文档中找出处理此问题的确切方法。我确信这就像修改 csv.writer 的选项一样简单。我应该改变什么来接受这些作为直字符串,而不是让它尝试在这些情况下找到结束引号?

Pet*_*son 5

您没有quoting=csv.QUOTE_NONE为您的读者指定。尝试

with open (INFO_FILE, "rt", encoding = "latin1") as info:
    info = csv.reader (info, delimiter = '\t', quoting=csv.QUOTE_NONE)
    for line in info:
        print(line)
Run Code Online (Sandbox Code Playgroud)

输出:

['B', '2885192', '"Some input']
[]
['L', '30019', '"']
Run Code Online (Sandbox Code Playgroud)