使用\ n将前一个字符放在一个新行上

时间:2016-07-02 15:56:12

标签: python

我试图为列表取一些值并将它们用于游戏配置,但是当我写入配置时它没有使用它应该的布局。

我有一个名为item_index.txt的文本文件和内容:

 <number>: <name>

我的代码是:

file = open("item_index.txt", "r", encoding="utf8")
    with open("config.cfg", "w") as config:
    lines = file.readlines()
    lines.sort()
    config.write('"Paints"\n{\n')
    for skin in lines:
        skin = skin.replace(": ",":")
        new_skin = skin.split(":")
        config.write('    "' + new_skin[1] + '"' + '\n')
        config.write('    {\n')
        config.write('        "paint"    "' + new_skin[0] + '"\n')
        config.write('        "wear"    "0.000000000000000001"\n')
        config.write('        "quality"    "3"\n')
        config.write('    }\n')
config.write("}")

理论上它应该像这样编写配置:

    "<name>"
    {
        "paint"    "<number>"
        "wear"    "0.000000000000000001"
        "quality"    "3"
    }

但由于某种原因,它正在输出:

    "<name>
"
    {
        "paint"    "<number>"
        "wear"    "0.000000000000000001"
        "quality"    "3"
    }

有谁知道会造成什么?我的猜测是它与之后的\ n有关,但在尝试使用一个config.write并将整个内容放在那里之后,我完全无能为力。对不起,如果这是模糊的。

2 个答案:

答案 0 :(得分:1)

您需要从new_skin的末尾删除换行符:

new_skin = skin.strip('\n').split(":")

答案 1 :(得分:0)

至于你的问题,你的问题是你在源文件读取的每一行末尾都有"\n" - 只需在使用其值之前将其删除 - new_skin[1].strip()而不是{ {1}}

但是,为了您的利益,请在Python中查看数十种handlign和插入字符串的方法 - 您只是为可读性和可维护性做了最糟糕的事情。

new_skin[1]