写入fi时行之间的空白

2024-06-02 08:15:50 发布

您现在位置:Python中文网/ 问答频道 /正文

写入文件时,文件中的每一行之间都会添加空格。尝试使用.strip()删除空白:

newstring = (mytemplate.render(identifiers=zipped_list))
print (newstring)

当内容被读入string newstring时,它将如下所示:

<headers>
        <universe>Default</universe>
        <domain>Instrument</domain>
        <universeOperation>Update</universeOperation>
        <acquisitionOperation>None</acquisitionOperation>
        <manufactureOperation>None</manufactureOperation>
        <publicationOperation>None</publicationOperation>
        <businessDate>2017-06-13</businessDate>
    </headers>
    <items>
        <item>
            <identifiers>
                <ID_BB_GLOBAL>TEST1234</ID_BB_GLOBAL>
            </identifiers>
            <classifiers>
                <CL_SUBSCRIBER>TEST</CL_SUBSCRIBER>
                <CL_STRATEGY>TEST</CL_STRATEGY>
            </classifiers>

将字符串写入文件时:

file = open(FILE_PATH + "Test.xml", "w")
file.write(newstring)

它看起来是这样的:

<headers>

        <universe>Default</universe>

        <domain>Instrument</domain>

        <universeOperation>Update</universeOperation>

        <acquisitionOperation>None</acquisitionOperation>

        <manufactureOperation>None</manufactureOperation>

        <publicationOperation>None</publicationOperation>

        <businessDate>2017-06-13</businessDate>

    </headers>

    <items>

        <item>

            <identifiers>

                <ID_BB_GLOBAL>BBG0016RLJ79</ID_BB_GLOBAL>

            </identifiers>

            <classifiers>

                <CL_SUBSCRIBER>SYS</CL_SUBSCRIBER>

                <CL_REMOVE>N</CL_REMOVE>

                <CL_STRATEGY>MAM_ID</CL_STRATEGY>

            </classifiers> 

如何删除每行之间的空白


Tags: noneidcldomainglobalheadersbbuniverse
1条回答
网友
1楼 · 发布于 2024-06-02 08:15:50

.strip()删除字符串的前导和尾随空格:

https://docs.python.org/3/library/stdtypes.html#str.strip

我想知道为什么你的print()和你的file.write()会产生如此不同的输出,因为.write()实际上并不追加/修改换行符。也许是Windows的东西(CRLF是Windows的标准配置)

无论如何,在您的情况下,删除多个换行符应该删除不需要的换行符:

your_string = re.sub(r'[\n\r]+', "\n", your_string, re.MULTILINE|re.DOTALL)

(当然,您需要import re。)

编辑

我很好奇,在发布了我的答案之后做了一些快速的研究,它看起来确实是一个Windows的东西:在Windows上,python自动地将每一个换行符转换成系统特定的表示,也就是Windows上的CRLF。为了避免这种情况,需要指定Python应该如何处理换行符,如:

file = open(your_file, newline="\n", ...)

所以这可能是一个更好的解决方案(也是一个更快的解决方案) 另请参见:

https://docs.python.org/3/library/functions.html#open

相关问题 更多 >