发布于2019-12-04 10:22 阅读(1254) 评论(0) 点赞(3) 收藏(0)
我正在使用python-docx处理word文档。这是我目前必须修改普通段落中的文本的内容:
doc = Document('idk.docx')
for paragraph in doc.paragraphs:
if "oldtext1" in paragraph.text:
paragraph.replace("oldtext1","Something")
if "oldtext2" in paragraph.text:
paragraph.replace("oldtext2","Somethingelse")
如果要修改表中的文本,则需要执行以下操作
tables = doc.tables
for table in tables:
for row in table.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
if "oldtext1" in paragraph.text:
paragraph.replace("oldtext1","Something")
if "oldtext2" in paragraph.text:
paragraph.replace("oldtext2","Somethingelse")
代码可以正常工作并且替换了文本,但是问题是我试图替换文档中文本的所有实例,并且我不想有2个单独的循环(1个用于段落中的普通文本,另一个用于表中的文本。 )
有没有简单的方法可以组合这些循环,因此我不必在2个不同的循环中具有相同的if语句?
我只会使用生成器理解:
from itertools import chain
for paragraph in chain(doc.paragraphs, (paragraph for table in doc.tables for row in table.rows for cell in row.cells for paragraph in cell.paragraphs)):
paragraph.replace("oldtext1","Something")
paragraph.replace("oldtext2","Somethingelse")
请注意,您不需要进行前瞻性检查 paragraph.replace()
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/167248/c07ffdab7ff65dc196d2/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!