写入文件时行与行之间的空格

Whitespace between lines when writing to a file

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

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

当内容被读入字符串 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> 

如何删除每行之间的空格?

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

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

我想知道为什么 print()file.write() 产生如此不同的输出,因为 .write() 实际上没有 append/modify 换行符。也许它是 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