python - 用来自 csv 的数据填充 word 模板。Python
问题描述
我有一个简单的 .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 代码。
你能帮我解决这个问题吗?
解决方案
推荐阅读
- python - 使用 Theano 获取 w_0 和 w_1 参数
- neo4j - 使用活动 UUID 插件在 Neo4j 中克隆具有关系的节点
- javafx - Javafx BorderPane.setCenter 更改底部区域的位置
- haskell - Haskell 动态分配类型
- sql - TSQL - 根据整数范围插入行
- html - 在 RMarkdown 中,是否可以在页面右侧放置浮动 TOC
- reactjs - 连接一个带有 id 的状态 | 反应JS
- java - gradle 到 maven 的转换,在依赖项的依赖项的版本名称中解析通配符“+”?
- django - 如何在 djangorestframework 中进行自定义响应
- node.js - 如何让 SSL 与非 ssl 协议数据配合得很好