При использовании метода применения, описанного ниже, значения, которые передаются как «строка», являются исключительно значениями из первой строки кадра данных.
df.apply(make_word_file, axis=1)
Как ни странно, имя файла, созданное в документе.сохранить () правильно.newname
имеет правильные значения в строке ['case_name'].Однако, если I print(row)
, он печатает значения из первой строки.
def make_word_file(row):
for key, value in mapfields.items():
# print(row)
regex1 = re.compile(key)
replace1 = str(row[value])
docx_replace_regex(document, regex1 , replace1)
newname = remove(row['case_name'], '\/:*?"<>|,.')
print(newname)
document.save(datadir + row["datename"] + "_" + row["court"] + "_" + newname + ".docx")
Я ожидал, что print(row)
напечатает значения из каждой строки в кадре данных, а не только в 1-м.
РЕДАКТИРОВАТЬ для ясности:
Этот скрипт представляет собой почтовое слияние, которое создает файлы слов .docx.mapfields
- это диктовка в формате regex: имя столбца.document
является объектом docx-python.
mapfields = {
"VARfname": "First Name",
"VARlname": "Last Name",
}