Python 组合 For 循环

标签 python for-loop

我正在使用 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()

进行前瞻性检查

关于Python 组合 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024022/

相关文章:

python 3.2 插件工厂 : instantiation from class/metaclass

cocoa:为什么 for-each 比 for 循环更快?

python - 从另一个 DataFrame 的列中的 JSON URL 生成 Dataframe

javascript - 如何同时打开多个javascript弹出窗口?

c - C 中的 for 循环异常行为

python - 从特定的分隔符拆分

python - 如何按数字排序但使用 dtype=object 读取_csv?

python - 如何在python中加入 map 的值

python - downloadPage 回调函数的问题

java - 将新对象添加到列表中; (for循环不能正常工作)