程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python合并循环

发布于2019-12-04 10:22     阅读(1255)     评论(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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)