使用toprettyxml()时新行的问题

Pie*_*rOz 10 python xml

我目前正在python脚本中使用xml.dom模块的toprettyxml()函数,我对换行有一些麻烦.如果不使用newl参数或者如果我使用toprettyxml(newl ='\n'),它实际上会显示几行而不是一行.

例如

f = open(filename, 'w')
f.write(dom1.toprettyxml(encoding='UTF-8'))
f.close()
Run Code Online (Sandbox Code Playgroud)

显示:

<params>


    <param name="Level" value="#LEVEL#"/>


    <param name="Code" value="281"/>


</params>
Run Code Online (Sandbox Code Playgroud)

有谁知道问题的来源以及如何使用它?仅供参考我使用的是Python 2.6.1

xve*_*ges 10

toprettyxml()太可怕了.这不是Windows和'\ r \n'的问题.尝试任何字符串作为newl参数显示添加了太多行.不仅如此,还增加了其他空白(当机器读取xml时可能会导致问题).

http://ronrothman.com/public/leftbraned/xml-dom-minidom-toprettyxml-and-silly-whitespace提供了一些解决方法

  • 非常感谢Xv!事实上,现在,我正在尝试尽可能少地使用 toprettyxml(),但很高兴知道有一个解决方法可以解决这个恼人的问题。而且帖子说的很清楚 (2认同)

dga*_*002 7

我发现了另一个很棒的解

f = open(filename, 'w')
dom_string = dom1.toprettyxml(encoding='UTF-8')
dom_string = os.linesep.join([s for s in dom_string.splitlines() if s.strip()])
f.write(dom_string)
f.close()
Run Code Online (Sandbox Code Playgroud)

上面的解决方案基本上删除了由toprettyxml()生成的dom_string中不需要的换行符.

输入取自 - > 什么是快速单行从python字符串中删除空行?

  • 对于python3,它必须是```dom_string = b'\ n'.join([s表示dom_string.splitlines()中的s,如果s.strip()])`'' (2认同)

小智 5

toprettyxml(newl='') 适用于Windows.

  • 这适用于除第一行之外的每一行,它似乎删除了换行符并合并了第 1 行和第 2 行... (3认同)