ilsoviet1917 发表于 2021-11-18 13:56:54

关于python-docx包的使用

import docx

initi_text = docx.Document('demo.docx')
arr = []
for para in initi_text.paragraphs:
    arr.append(para.text)
# arr = ''.join(arr)

doc = docx.Document()
doc.add_paragraph(arr)
doc.save('trans_for_docx.docx')

从demo文档读取内容,写入trans_for_docx,写入后格式出现了变化。
源文档第一行文字居中,第二行文字从左到右,但是写入后的文档变成了一整排,回车空格什么的被自动删除了。这是什么原因?

ilsoviet1917 发表于 2021-11-18 14:09:31

这是图

suchocolate 发表于 2021-11-18 15:05:23

提取完字符串就只是字符串了,设置字体得自己来。
>>> from docx.enum.text import WD_ALIGN_PARAGRAPH
>>> document = Document()
>>> paragraph = document.add_paragraph()
>>> paragraph_format = paragraph.paragraph_format

>>> paragraph_format.alignment
None# indicating alignment is inherited from the style hierarchy
>>> paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
>>> paragraph_format.alignment
CENTER (1)
如果是复制文件,直接shutil库复制即可。

ilsoviet1917 发表于 2021-11-22 09:01:24

本帖最后由 ilsoviet1917 于 2021-11-22 09:33 编辑

suchocolate 发表于 2021-11-18 15:05
提取完字符串就只是字符串了,设置字体得自己来。

如果是复制文件,直接shutil库复制即可。

还是不太理解你的答案,现在不是提取字体,只是提取文字和格式。我的理解是,不管是居中还是空格还是段落首部空两格,都是空格和回车组成的,所以能在提取的时候保留空格和回车就行。

提取后还要进一步翻译,所以shutil不合适。

suchocolate 发表于 2021-11-22 10:13:36

ilsoviet1917 发表于 2021-11-22 09:01
还是不太理解你的答案,现在不是提取字体,只是提取文字和格式。我的理解是,不管是居中还是空格还是段 ...

空格会自动保留,'回车'得改个形式:import docx

txt = docx.Document('demo.docx')
doc = docx.Document()
for para in txt.paragraphs:
    # t = TransateFunc(para.text) --> return: str
    # doc.add_paragraph(t)
    doc.add_paragraph(para.text)
doc.save('trans_for_docx.docx')
页: [1]
查看完整版本: 关于python-docx包的使用