gpt4 book ai didi

Python Docx 回车

转载 作者:太空狗 更新时间:2023-10-29 20:46:03 29 4
gpt4 key购买 nike

Python Docx 是一个非常好的库,用于为不直接处理所有 COM 内容的内容生成 Microsoft Word 文档。尽管如此,我还是遇到了一些限制。

  • 有谁知道如何在一串文本中加入回车符?

我希望一个段落有多行,并且它们之间没有多余的空格。但是,用通常的 \n 写出分隔行的字符串是行不通的。也不使用 。任何其他想法,或者这个框架对于类似的事情来说是否太有限了?

最佳答案

我不确定这是否可行。看起来 Word 实际上是在将按下回车键(我将此操作视为“\r\n”和“\n”的一种编程等价物)视为新段落的创建。


如果我在 Word 中录制一个包含以下内容的宏:

  1. 输入文字“一”
  2. 按下回车键

我得到的 VBA 是:

Selection.TypeText Text:="One"
Selection.TypeParagraph

如果我创建一个如下所示的 Word 文档(在每个单词后按回车键):

One

Two

Three

该文档的正文在 documents.xml 中看起来像这样文件:

<w:body>
<w:p w:rsidR="00BE37B0" w:rsidRDefault="00CF2350">
<w:r>
<w:t>One</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Two</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Three</w:t>
</w:r>
</w:p>
<w:sectPr w:rsidR="00CF2350" w:rsidSect="001077CC">
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
<w:cols w:space="708"/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>

来自 MSDN我们可以看到 <w:p>元素代表一个段落。


我认为解决这个问题的方法是遵循 Python Docx 中的示例:

body.append(paragraph("Hi."))
body.append(paragraph("My name is Alice."))
body.append(paragraph("Let's code"))

或者:

for paragraph_text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
body.append(paragraph(paragraph_text.strip()))

编辑:

进一步研究,如果您在 Word 中按 Shift + Enter,它会通过附加 Chr(11) 添加手动换行符(不是段落) .在 Open XML 中,这转换为 Break .

查看 docx.py Python Docx 文件,这样的事情可能是要走的路(免责声明:未测试):

for text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
run = makeelement('r')
run.append(makeelement('t', tagtext=text))
run.append(makeelement('br'))
body.append(run)

关于Python Docx 回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328369/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com