鱼C论坛

 找回密码
 立即注册
查看: 1515|回复: 4

[已解决]关于python-docx包的使用

[复制链接]
发表于 2021-11-18 13:56:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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,写入后格式出现了变化。
源文档第一行文字居中,第二行文字从左到右,但是写入后的文档变成了一整排,回车空格什么的被自动删除了。这是什么原因?
最佳答案
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')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-18 14:09:31 | 显示全部楼层
这是图
demo.png
trans.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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库复制即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-22 09:01:24 | 显示全部楼层
本帖最后由 ilsoviet1917 于 2021-11-22 09:33 编辑
suchocolate 发表于 2021-11-18 15:05
提取完字符串就只是字符串了,设置字体得自己来。

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


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

提取后还要进一步翻译,所以shutil不合适。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表