我有一个简单的 .docx 模板,其中有 {ISO} 占位符。此占位符应替换为 CSV 文件中的 ISO 代码。之后应该创建3个输出文档。
问题在于它使用 new_text
进行迭代,但使用 paragraph.text
时它始终是列表中的第一个 ISO。此外,仅当 new_text
被注释掉时,它才使用 paragraph.text = str.replace(orig_text_2,'{ISO}', iso_code)
进行迭代。
from docx import Document
import pandas as pd
document = Document('Dear.docx')
csv = pd.read_csv('csv_file.csv', delimiter=';')
countries = csv.Country.tolist()
print(countries)
for paragraph in document.paragraphs:
if '{ISO}' in paragraph.text:
for iso in countries:
iso_code = csv.loc[csv['Country'] == iso, 'Country'].values[0]
print(iso_code)
orig_text_1 = paragraph.text
orig_text_2 = paragraph.text
new_text = str.replace(orig_text_1, '{ISO}', iso_code)
#paragraph.text = str.replace(orig_text_2,'{ISO}', iso_code)
print(new_text)
print(paragraph.text)
document.save('Output_{}.docx'.format(iso))
注释掉paragraph.text = str.replace(orig_text_2,'{ISO}', iso_code)
的输出
['AFG', 'PWL', 'HIT']
AFG
Dear AFG,
Dear {ISO},
PWL
Dear PWL,
Dear {ISO},
HIT
Dear HIT,
Dear {ISO},
带有未注释 paragraph.text = str.replace(orig_text_2,'{ISO}', iso_code)
的输出
['AFG', 'PWL', 'HIT']
AFG
Dear AFG,
Dear AFG,
PWL
Dear AFG,
Dear AFG,
HIT
Dear AFG,
Dear AFG,
我需要更新 paragraph.text
以编写输出文档,否则在输出文档中总是有列表中的第一个 ISO 代码。
你能帮我解决这个问题吗?