如何不在最后一个元素后添加定界符

时间:2019-02-12 16:24:26

标签: python delimiter

我正在研究python代码,该代码读取然后更新文件中的行,并在制表中显示它们(之前和之后) 但是,当将数据写回到文件中时,在最后一个元素后添加定界符“:”,这会导致表格格式崩溃,我如何避免这种情况

with open ('hotel.txt', 'w') as file:
    for i in list:
        for j in i:
            file.write(j+':')
        file.write('\n')

错误: 例外:行的值数量不正确,(实际)8!= 7(预期)

也:由于被归类,我无法更改表格形式

2 个答案:

答案 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来避免这种情况,但随后您将整个清单。无论如何,我认为第一种方法更简单。