我正在研究python代码,该代码读取然后更新文件中的行,并在制表中显示它们(之前和之后) 但是,当将数据写回到文件中时,在最后一个元素后添加定界符“:”,这会导致表格格式崩溃,我如何避免这种情况
with open ('hotel.txt', 'w') as file:
for i in list:
for j in i:
file.write(j+':')
file.write('\n')
错误: 例外:行的值数量不正确,(实际)8!= 7(预期)
也:由于被归类,我无法更改表格形式
答案 0 :(得分:4)
组合由定界符分隔的字符串时,通常使用str.join
:
with open ('hotel.txt', 'w') as file:
for i in list:
file.write(":".join(i))
file.write('\n')
答案 1 :(得分:0)
与其在每个项目之后写定界符并避免写最后一个,而在每个项目之前写定界符 并避免写第一个。
with open ('hotel.txt', 'w') as file:
for i in list:
delim = ""
for j in i:
file.write(delim + j)
delim = ":"
file.write('\n')
另一种方法是从循环中排除最后一项,并将其单独写入:
with open ('hotel.txt', 'w') as file:
for i in list:
for j in i[:-1]:
file.write(j + ":")
file.write(list[-1] + '\n')
但这是假设列表中始终至少有一个项目(空列表将在list[-1]
上显示错误)。您可以使用if
语句来避免这种情况,但是您仍在复制大多数列表...您可以使用itertools.islice
来避免这种情况,但随后您将整个清单。无论如何,我认为第一种方法更简单。