ValueError:解析txt时解压缩的值太多

时间:2015-11-29 04:48:34

标签: python parsing replace

我有一个小的txt文件,我需要在以特定关键字开头的行上用单个标签替换多个空格,所以首先我用单个空格替换多个空格,然后用标签替换 我的剧本:

input_file=open('file.txt', "rw")
for i, line in input_file:
    if line.startswith('City'):
        while '  ' in line:
            line = line.replace('  ', ' ')
        input_file.write(line)
input_file.close   

我有这个错误:

ValueError                                Traceback (most recent call last)
<ipython-input-26-dfd976cfc18d> in <module>()
      1 input_file=open('file.txt', "rw")
----> 2 for i, line in input_file:
      3     if line.startswith('City'):
      4         while '  ' in line:
      5             line = line.replace('  ', ' ')

ValueError: too many values to unpack

为什么会发生?

1 个答案:

答案 0 :(得分:1)

如果你确实需要i,这是一个数字(如果未定义start关键字参数,则从0开始),每次迭代递增并由enumerate生成:

尝试添加enumerate()

for i, line in enumerate(input_file):

如果你不这样做,只需使用:

for line in input_file:

关于&#34;双倍空格删除&#34;,无需使用 while 。只需使用ifreplace

if '  ' in line:
    line = line.replace('  ', ' ')
input_file.write(line)

关于 open() ,您可以使用 with 语句来避免关闭打开的文件。

  

这样做的好处是文件在其之后正确关闭   套房完成

with open('file.txt', "rw") as input_file:
    for line in input_file:
        if line.startswith('City'):
            if '  ' in line:
                line = line.replace('  ', ' ')
            input_file.write(line)

请参阅本节的最后一个示例https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

open() 模式从"rw"更改为"r+",以避免以下错误:

  

IOError:[Errno 9]错误的文件描述符