【发布时间】:2019-05-29 08:02:04
【问题描述】:
我正在使用 lxml 编写一个 XML 文件,并且在其中一个节点中,要写入的内容是一个很长的字符串。 我正在寻找一种将这些字符串包装在 XML 节点中的方法。
目前,我尝试如下:
from lxml import etree
def lines_lenght(string, width):
words = string.split()
for i in range(0, len(words), width):
yield " ".join(words[i:i+width])
s = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec in enim at arcu tincidunt tristique. Ut commodo dui hendrerit lobortis egestas. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed laoreet interdum enim ut cursus. Fusce condimentum dictum dictum. Morbi feugiat bibendum enim, ut mollis turpis tincidunt vitae. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce libero ante, consectetur at sollicitudin at, eleifend lacinia ipsum. In hac habitasse platea dictumst. Sed laoreet mi eu nisi condimentum, sit amet vestibulum purus elementum. Nam a eros mi.
"""
root = etree.Element("corpus")
doc = etree.ElementTree(root)
article_node = etree.SubElement(root, "article")
final_content = "\n".join(lines_lenght(s, 10))
article_node.text = final_content
doc.write("corpus.xml", xml_declaration=True, encoding="utf-8")
但是在生成的 XML 文件中,似乎没有保留换行符。根据this answer我尝试用
代替\n,但结果是一样的。
有什么提示可以帮助我吗?
编辑:这是我尝试实现的预览:
<corpus>
<article>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec in
enim at arcu tincidunt tristique. Ut commodo dui hendrerit lobortis
egestas. Orci varius natoque penatibus et magnis dis parturient montes</article>
</corpus>
代替:
<corpus>
<article>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec in enim at arcu tincidunt tristique. Ut commodo dui hendrerit lobortis egestas. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</article>
</corpus>
【问题讨论】:
-
你能展示(至少部分)你的预期输出吗?
-
完成,希望现在更清楚了。很抱歉之前没有这样做。