获取此测试CSV文件:
COLUMN1;COLUMN2;COLUMN3;COLUMN4;COLUMN5;COLUMN6;COLUMN7
CODE;1234;0123456789;0987654321;012345678987654321;012345;10110025
我想将此文件转换为XML。为此,我使用this Stackoverflow answer中的代码。完整的测试代码是:
import csv
import pandas as pd
df = pd.read_csv('test.csv', sep=';')
def convert_row(row):
return """<root>
<column1>%s</column1>
<column2>%s</column2>
<column3>%s</column3>
<column4>%s</column4>
<column5>%s</column5>
<column6>%s</column6>
<column7>%s</column7>
</root>""" % (
row.COLUMN1, row.COLUMN2, row.COLUMN3, row.COLUMN4, row.COLUMN5, row.COLUMN6, row.COLUMN7)
print '\n'.join(df.apply(convert_row, axis=1))
但是,每个以零开头的列值都会被删除前导零字符。这是输出:
<root>
<column1>CODE</column1>
<column2>1234</column2>
<column3>123456789</column3>
<column4>987654321</column4>
<column5>12345678987654321</column5>
<column6>12345</column6>
<column7>10110025</column7>
</root>
我认为使用%s
可以保持原始字符串的完整性而不以任何方式修改它,是不是这样?
如何确保XML输出在CSV文件中接收完全相同的值?
答案 0 :(得分:2)
问题不在于字符串格式,而在于CSV导入。导入时,Pandas会将您的数据转换为int64
。
请尝试df = pd.read_csv('test.csv', sep=';', dtype='str')
以避免这种情况。
希望这有帮助!