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

Python ValueError:解析txt时要解压缩的值太多,python,parsing,replace,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_

我有一个小的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
ValueError回溯(最近一次调用)
在()
1输入文件=打开('file.txt',“rw”)
---->2对于i,输入_文件中的行:
3如果行开始于(“城市”):
4当“”处于行中时:
5行=行。替换(“”,“”)
ValueError:要解压缩的值太多

为什么会这样

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

尝试添加:

如果没有,请使用:

for line in input_file:

关于“双空格删除”,无需使用
,而
。如果
替换,只需使用

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

关于
open()

这样做的好处是,文件在运行后会正确关闭 套房装修

请参见本节的最后一个示例


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

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


输入文件中的行应该是
你不能在任何地方使用
i
,所以我不知道你期望它是什么,但是如果你想让它在你运行时计算行数,那么枚举(输入文件)中的i行应该是
。有关发生的事情的详细信息,请参阅到一个稍微不同的问题。@t谢谢!今天我更新了我的答案,学到了一些东西。@bmhkim我理解你的观点,但我不会为一个不会自杀的人写答案。这是非常基本的Python,他在提问之前必须阅读,并且有很多关于
for
如何工作的问题和教程。我只是给他演示
enumerate
,这样他就可以搜索它的功能和帮助。@AndrésPérez AlbelaH.:没问题:D@very_young:因为除非设置了
计数,否则将替换字符串中的所有字符,例如
'foo'。替换('o','a')
返回
'faa'
。实际上,您只需运行
str.replace()。如果没有任何内容,则可以替换
str.replace()
将返回原始字符串,并且不会引发错误。检查我链接的文档以获得更多的细节。@ VyYyYouYou.我已经更新了我的答案,如果你考虑的话,你可以把它设置成你的问题的答案。让我们把我们的讨论留在这里,如果你觉得我这边的气氛不好,请向我道歉。请把我的话作为你今后提问的建议。有一个愉快的周末。
if '  ' in line:
    line = line.replace('  ', ' ')
input_file.write(line)
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)