根据条件更改标签值
change value of tag respecting conditions
我想读取 csv 文件。
第一列指tag source
,第二列指value source
,第三列指target value
改变。最后一列指的是 tag name
已更改。
请问我怎样才能动态地做到这一点?
Types1, Init, INITIAL, Type1
Types1, inits, INITIAL, Type1
Types2, ANNULE, delayed, Type2
Types3, Topp, high, Type3
Types3, best, TOP, Type3
输入样本
<data>
<db1>
<Types1> Init </Types1>
<Types1> inits </Types1>
<Types3> best </Types3>
</db1>
<db1>
<Types2> ANNULE </Types2>
<Types3> Topp </Types3>
<Types3> best </Types3>
</db1>
<data>
预期输出
<data>
<db1>
<Type1> INITIAL </Type1>
<Type1> INITIAL </Type1>
<Type3> TOP </Type3>
</db1>
<db1>
<Type2> delayed </Type2>
<Type3> high </Type3>
<Type3> TOP </Type3>
</db1>
对于如下的 csv 数据:
您需要使用 pandas
来管理 csv 和 ElementTree
来管理 xml 文件。
import xml.etree.ElementTree
import pandas as pd
df = pd.read_csv('data.csv')
root = xml.etree.ElementTree.parse('data.xml')
for tag in df['tag'].unique():
for item in root.iter(tag):
text = item.text.strip()
data_row = df[(df['tag']==tag) & (df['old']==text)]
item.text = data_row['new'].values[0]
root.write('file_new.xml')
输出:
<data>
<db1>
<Types1>INITIAL</Types1>
<Types1>INITIAL</Types1>
<Types3> best </Types3>
</db1>
<db1>
<Types2>delayed</Types2>
<Types3> Topp </Types3>
<Types3> best </Types3>
</db1>
</data>
我想读取 csv 文件。
第一列指tag source
,第二列指value source
,第三列指target value
改变。最后一列指的是 tag name
已更改。
请问我怎样才能动态地做到这一点?
Types1, Init, INITIAL, Type1
Types1, inits, INITIAL, Type1
Types2, ANNULE, delayed, Type2
Types3, Topp, high, Type3
Types3, best, TOP, Type3
输入样本
<data>
<db1>
<Types1> Init </Types1>
<Types1> inits </Types1>
<Types3> best </Types3>
</db1>
<db1>
<Types2> ANNULE </Types2>
<Types3> Topp </Types3>
<Types3> best </Types3>
</db1>
<data>
预期输出
<data>
<db1>
<Type1> INITIAL </Type1>
<Type1> INITIAL </Type1>
<Type3> TOP </Type3>
</db1>
<db1>
<Type2> delayed </Type2>
<Type3> high </Type3>
<Type3> TOP </Type3>
</db1>
对于如下的 csv 数据:
您需要使用 pandas
来管理 csv 和 ElementTree
来管理 xml 文件。
import xml.etree.ElementTree
import pandas as pd
df = pd.read_csv('data.csv')
root = xml.etree.ElementTree.parse('data.xml')
for tag in df['tag'].unique():
for item in root.iter(tag):
text = item.text.strip()
data_row = df[(df['tag']==tag) & (df['old']==text)]
item.text = data_row['new'].values[0]
root.write('file_new.xml')
输出:
<data>
<db1>
<Types1>INITIAL</Types1>
<Types1>INITIAL</Types1>
<Types3> best </Types3>
</db1>
<db1>
<Types2>delayed</Types2>
<Types3> Topp </Types3>
<Types3> best </Types3>
</db1>
</data>