写入文件时行之间的空格

时间:2019-04-26 08:35:53

标签: python newline file-writing

在写入文件时,在文件的每一行之间添加空格。尝试使用.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> 

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

1 个答案:

答案 0 :(得分:0)

.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