LLL_ABC0D012_title.xml
LLL_ABC0D013_title.xml
LLL_ABT0G012_title.xml
LLL_ABR0N012_title.xml
После «LLL_» всегда должно быть 8 символов.
У меня есть файл Excel с более чем 900 строками, который выглядит следующим образом:
< thead>
ссылка
dtp1
dtp2
< th>dtp3
ABC0D0121_blabla
1_1_blablabla
1_1_1_blablabla
ABC0D013
1_blabla
1_1_blablabla
1_1_1_blablablabla
ABC0D014
1_blabla
1_1_blablabla1_1_1_blablablabla
ABT0G012
1_blabla
1_1_blablabla
1_1_1_blablablabla
В моих XML-файлах есть теги text, text, text.
Я бы сделал это хотелось бы изменить текст этих тегов на текст в ячейках соответствующих столбцов в таблице выше.
Для этого я бы хотел, чтобы мой скрипт выполнял цикл, который читает Символы ABC0D012 (а затем еще один) в заголовке моего XML-файла, найдите совпадение в столбце «Ссылка» моего файла Excel, а затем найдите соответствующее значение в «dtp1», «dtp2» и «dtp3».
Затем я хотел бы сохранить эти значения в переменной, чтобы заменить текст в моих тегах.
Я новичок в Python. Я попробовал что-то вроде:
Код: Выделить всё
import numpy as np
import openpyxl
import pandas as pd
import xml.etree.ElementTree as ET
import os
table1 = pd.read_excel('C:/Users/Documents/datatypes.xlsx', na_values=['NA'])
table2 = table1.replace('\xa0', ' ',regex=True)
for root, dirs, files in os.walk("."):
for file in files :
if file[-4:] == '.xml':
#print(file)
xml = ET.parse('LLL_ABC0D012_title.xml')
root = xml.getroot()
dtp1_xml = root[8]
dtp2_xml = root[9]
dtp3_xml = root[10]
num = file[4:12]
#print(num)
dtp1_excel = table2['dtp1'].where(table2['reference'] == num)
dtp1_xml.text = dtp1_excel
#print(dtp1_xml.text)
ET.indent(root)
xml.write("LLL_ABC0D012_title.xml", encoding='utf-8', xml_declaration=True, method='xml')
Код: Выделить всё
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
...
931 NaN
932 NaN
933 NaN
934 NaN
935 NaN
Name: dtp1, Length: 936, dtype: object
Что не так с моим подходом? Не могли бы вы мне помочь, пожалуйста?
Подробнее здесь: https://stackoverflow.com/questions/786 ... cell-in-th