0

我有两个文件,它们有两列如下:

file 1
------
main 46
tag  23
bear 15
moon 2

file 2
------
main 20
rocky 6
zoo 4
bear 2

我正在尝试将每个文件的前 2 行一起比较,如果有一些相同的单词,我将总结这些数字并将它们写入一个新文件。

我阅读了该文件并使用 foreach 循环遍历每一行,但它返回一个 ValueError:too many values to unpack。

import os
from itertools import islice
DIR = r'dir'
for filename in os.listdir(DIR):
    with open(os.path.sep.join([DIR, filename]), 'r') as f:
        for i in range(2):
            line = f.readline().strip()
            word, freq = line.split():
                print(word)
                print(count)

在文件中,文本的每一行之后都有一个额外的空行。我搜索了 \n; 但什么都没有。然后我手动删除了它们,然后它就起作用了。

4

1 回答 1

0

如果您不知道行中有多少物品,那么您就不能使用漂亮的解包工具。你需要拆分并检查你有多少。例如:

with open(os.path.sep.join([DIR, filename]), 'r') as f:
    for line in f:
        data = line.split()
        if len(data) >= 2:
            word, count = line[:2]

这将为您提供至少包含那么多的任何行的前两个字段。由于您尚未指定如何处理其他行或额外字段,我将把它(任何其他部分)留给您。我还省略了条形部分以强调现有代码;行输入和拆分将摆脱换行符和空格,但不一定是所有空格。

于 2017-04-11T17:57:49.453 回答