我有一个小的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
为什么会发生?
答案 0 :(得分:1)
如果你确实需要i
,这是一个数字(如果未定义start
关键字参数,则从0开始),每次迭代递增并由enumerate
生成:
尝试添加enumerate()
:
for i, line in enumerate(input_file):
如果你不这样做,只需使用:
for line in input_file:
关于&#34;双倍空格删除&#34;,无需使用 while
。只需使用if
和replace
:
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]错误的文件描述符