簡體   English   中英

在Python中使用%s會去除CSV到XML轉換中的前導零

[英]Using %s in Python strips leading zeroes in CSV to XML conversion

進行以下測試CSV文件:

COLUMN1;COLUMN2;COLUMN3;COLUMN4;COLUMN5;COLUMN6;COLUMN7
CODE;1234;0123456789;0987654321;012345678987654321;012345;10110025

我想將此文件轉換為XML。 為此,我正在使用此Stackoverflow答案中的代碼。 完整的測試代碼是這樣的:

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文件中接收完全相同的值?

問題不在於字符串格式,而在於CSV導入。 熊貓在導入時會將您的數據轉換為int64

嘗試df = pd.read_csv('test.csv', sep=';', dtype='str')避免這種情況。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM