首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从TSV行读取5列时的解压缩错误

试图从TSV行读取5列时的解压缩错误
EN

Stack Overflow用户
提问于 2015-06-28 18:11:27
回答 1查看 48关注 0票数 0

我有一个TSV文件,包含有5列的行。我想将每一行的列写到单独文件中的行中。第一列是文件名。我尝试了下面的代码,但得到了以下错误。

代码语言:javascript
复制
  filename, text, missspellings, uncertainty, weekgoal = row
ValueError: need more than 2 values to unpack
代码语言:javascript
复制
import csv
import sys

csv.field_size_limit(sys.maxsize)

with open("id_descr.tsv") as f:
    reader     = csv.reader(f, delimiter="\t")
    fieldnames = next(reader)
    for row in reader:
        filename, text, missspellings, uncertainty, weekgoal = row
        print('filename: {}'.format(filename))
        print('text: {}'.format(text))
        print('missspellings: {}'.format(missspellings))
        print('uncertainty: {}'.format(uncertainty))
        print('weekgoal: {}'.format(week goal))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 18:30:57

至少有一行少于5列。不要将每一列分配给一个变量,只需写出所得到的任何列。与其打印值,不如根据第一列中的文件名将它们写入文件。您可以使用从标头读取的字段名,而不是再次将它们写入。

代码语言:javascript
复制
data_columns = next(reader)[1:]  # skip first column header, the filename

for row in reader:
    if not row:
        continue  # need at least filename

    with open(row[0], 'w') as out:  # make separate files
        for name, value in zip(data_columns, row[1:]):  # write columns except filename
            out.write('{}: {}'.format(name, value))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31103108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档