Python 如何解决这个问题';ValueError:值太多,无法解压缩';

Python 如何解决这个问题';ValueError:值太多,无法解压缩';,python,Python,我正在尝试将一个包含500k行的大型.tsv文件解析为每行的单个.txt文件。 我的脚本现在可以迭代到id 11533,然后停止并输出以下错误: 文件名中第18行的文件“goldfish.py”,text=prev_行 ValueError:要解压缩的值太多 我的脚本如下所示: import csv import sys csv.field_size_limit(sys.maxsize) with open('id_descr.tsv', 'rb') as f: reader = c

我正在尝试将一个包含500k行的大型.tsv文件解析为每行的单个.txt文件。 我的脚本现在可以迭代到id 11533,然后停止并输出以下错误:

文件名中第18行的文件“goldfish.py”,text=prev_行

ValueError:要解压缩的值太多

我的脚本如下所示:

import csv
import sys

csv.field_size_limit(sys.maxsize)

with open('id_descr.tsv', 'rb') as f:
reader     = csv.reader(f, delimiter='\t')
fieldnames = next(reader)

prev_row = next(reader)

for row in reader:
    if not row:
        continue
    if len(row) == 1 or not row[0].isdigit():
        prev_row[-1] += row[0]
    else:
        filename, text = prev_row
        filename = filename + ".txt"
        with open(filename, 'wb') as output:
            output.write(text)
            output.write('\n')
            prev_row = row
下面的.tsv文件包含最后一个迭代的行(id=11533)和下一个未解析的行(这是脚本停止的点)

因此,我的问题是:

有没有办法忽略这种错误,
或者如何更改脚本以避免此错误?

输入文件的第3行有三个制表符,分隔四个字段:

  • 11534
  • “世界的转变”
  • “我没有得到[…]很棒的闪光”
  • “2012。我[…]没有歌词”

我不知道你应该如何解决这个问题,因为你的数据似乎有问题。

我不确定我是否完全理解你的问题。你为什么不能就这样做

import csv
import sys

with open('sample.tsv', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    fieldnames = next(reader)

    orig_stdout = sys.stdout
    stuff = []
    rowNUM = 0
    for row in reader:
        if len(row)==0 #some checking
            pass
        #

        sys.stdout = open('file'+str(rowNUM), 'w') #direct output here
        print row # print to file specified above

        stuff = stuff + row # make an ongoing list?
    #

如果无法捕获并可能丢弃/记录异常,请使用切片提取数据,而不是解包

    else:
        filename = prev_row[0]
        text = '\t'.join(prev_row[1:])

使用
try…除
块外。通过异常跳过有问题的行。