【发布时间】:2016-07-01 15:28:40
【问题描述】:
我正在使用 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 语句?
【问题讨论】:
-
你在循环不同的东西,所以我看不出这段代码有什么问题
-
@cricket_007 我同意,但我建议将逐段处理放在一个函数中以避免代码重复
-
@HumphreyTriscuit - 我正要这么说,但这是个人喜好,我不确定两个块是否相同
-
@cricket_007:我目前拥有的代码很好,但会有更多的 if 语句,我不希望它们同时存在于两组循环中,因为它们是相同的跨度>
-
@Bijan cricket 是正确的;你的循环很好。如果您想要更少的
if语句,那么将该逻辑放在一个函数中并从每个循环中调用它。