写入文件时行与行之间的空格
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()
删除字符串的前导和尾部空格:
我想知道为什么 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", ...)
所以这可能是一个更好的解决方案(也是一个更快的解决方案)
另见:
写入文件时,文件中的每一行之间都会添加空格。尝试使用 .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()
删除字符串的前导和尾部空格:
我想知道为什么 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", ...)
所以这可能是一个更好的解决方案(也是一个更快的解决方案) 另见: