将输出保存(打印)为 xml 文件不起作用
Save (print) output as a xml file doesnt work
我写了一个小程序,用一个函数逐行读取 csv 文件。
然后将输出结构保存在一个变量中。然后我想打开一个 xml 文件并将我的输出与变量一起传递。不知何故,当我打开保存的文件时,并没有保存整个输出。
import pandas as pd
df = pd.read_csv('mytests.csv', sep=',')
def csv_to_xml(row):
return """ <Test Testname="%s">
<Health_Feat>%s</Health_Feat>
<Result>%s</Result>
</Test>""" % (row.test_name, row.health_feat, row.result)
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f = open("new_xml_1.xml","w+")
f.write(xml_1)
f.close()
我在打印时得到了这个输出 xml_1
<Test Testname="test_1">
<Health_Feat>20</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_2">
<Health_Feat>23</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_3">
<Health_Feat>24</Health_Feat>
<Result>0</Result>
</Test>
<Test Testname="test_3">
<Health_Feat>30</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_4">
<Health_Feat>12</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_5">
<Health_Feat>45</Health_Feat>
<Result>0</Result>
</Test>
<Test Testname="test_6">
<Health_Feat>34</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_7">
<Health_Feat>78</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_8">
<Health_Feat>23</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_9">
<Health_Feat>12</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_10">
<Health_Feat>12</Health_Feat>
<Result>2</Result>
</Test>
但是当我打开 "new_xml_1.xml" 文件时,我只得到
<Test Testname="test_10">
<Health_Feat>12</Health_Feat>
<Result>2</Result>
</Test>
我真的不知道为什么我的程序表现如此奇怪。我认为它与循环到 csv
的行有关
感谢您的帮助。我是 Python 和编程的新手,所以我想获得一些经验。
它只保存最后一个输出,因为你在 for
循环之后保存外部变量 xml_1
,它只有最后一个输出。在循环之前打开文件,并在循环内写入,就像在循环内打印一样。
f = open("new_xml_1.xml","w+")
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f.write(xml_1)
f.close()
变量xml_1
包含循环执行后的最后一行数据。您必须将将变量写入文件的代码移动到循环中,或者捕获列表中的每一行,然后将该列表写入文件。下面的代码片段实现了前一种方法:
import pandas as pd
df = pd.read_csv('mytests.csv', sep=',')
def csv_to_xml(row):
return """ <Test Testname="%s">
<Health_Feat>%s</Health_Feat>
<Result>%s</Result>
</Test>""" % (row.test_name, row.health_feat, row.result)
with open("new_xml_1.xml","w+") as f:
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f.write(xml_1)
我写了一个小程序,用一个函数逐行读取 csv 文件。 然后将输出结构保存在一个变量中。然后我想打开一个 xml 文件并将我的输出与变量一起传递。不知何故,当我打开保存的文件时,并没有保存整个输出。
import pandas as pd
df = pd.read_csv('mytests.csv', sep=',')
def csv_to_xml(row):
return """ <Test Testname="%s">
<Health_Feat>%s</Health_Feat>
<Result>%s</Result>
</Test>""" % (row.test_name, row.health_feat, row.result)
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f = open("new_xml_1.xml","w+")
f.write(xml_1)
f.close()
我在打印时得到了这个输出 xml_1
<Test Testname="test_1">
<Health_Feat>20</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_2">
<Health_Feat>23</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_3">
<Health_Feat>24</Health_Feat>
<Result>0</Result>
</Test>
<Test Testname="test_3">
<Health_Feat>30</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_4">
<Health_Feat>12</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_5">
<Health_Feat>45</Health_Feat>
<Result>0</Result>
</Test>
<Test Testname="test_6">
<Health_Feat>34</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_7">
<Health_Feat>78</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_8">
<Health_Feat>23</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_9">
<Health_Feat>12</Health_Feat>
<Result>1</Result>
</Test>
<Test Testname="test_10">
<Health_Feat>12</Health_Feat>
<Result>2</Result>
</Test>
但是当我打开 "new_xml_1.xml" 文件时,我只得到
<Test Testname="test_10">
<Health_Feat>12</Health_Feat>
<Result>2</Result>
</Test>
我真的不知道为什么我的程序表现如此奇怪。我认为它与循环到 csv
的行有关感谢您的帮助。我是 Python 和编程的新手,所以我想获得一些经验。
它只保存最后一个输出,因为你在 for
循环之后保存外部变量 xml_1
,它只有最后一个输出。在循环之前打开文件,并在循环内写入,就像在循环内打印一样。
f = open("new_xml_1.xml","w+")
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f.write(xml_1)
f.close()
变量xml_1
包含循环执行后的最后一行数据。您必须将将变量写入文件的代码移动到循环中,或者捕获列表中的每一行,然后将该列表写入文件。下面的代码片段实现了前一种方法:
import pandas as pd
df = pd.read_csv('mytests.csv', sep=',')
def csv_to_xml(row):
return """ <Test Testname="%s">
<Health_Feat>%s</Health_Feat>
<Result>%s</Result>
</Test>""" % (row.test_name, row.health_feat, row.result)
with open("new_xml_1.xml","w+") as f:
for index, row in df.iterrows():
xml_1 = (csv_to_xml(row))
print(xml_1)
f.write(xml_1)