Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python csv到xls转换期间修改的格式_Python_Csv - Fatal编程技术网

Python csv到xls转换期间修改的格式

Python csv到xls转换期间修改的格式,python,csv,Python,Csv,我的目标是将目录中本地化的csv文件转换为xls文件 我的csv文件主要由一行“标记”(例如1.0000、2.0000…)和一行“日期”(例如26/04/2013)组成。 这两行的格式对我来说非常重要 我使用以下代码: import sys, csv, xlwt, glob, os import shutil def cont_directory (): return glob.glob('/home/julien/excel/csv/*.csv') liste = cont_dire

我的目标是将目录中本地化的csv文件转换为xls文件

我的csv文件主要由一行“标记”(例如1.0000、2.0000…)和一行“日期”(例如26/04/2013)组成。 这两行的格式对我来说非常重要

我使用以下代码:

import sys, csv, xlwt, glob, os
import shutil

def cont_directory ():
    return glob.glob('/home/julien/excel/csv/*.csv')
liste = cont_directory()

try: 
    for i in liste:
        f=open(i, 'rb')
        g = csv.reader ((f), delimiter = ";")
        workbook=xlwt.Workbook()
        sheet= xlwt.Workbook()


        sheet = workbook.add_sheet("To be modified")

        for rowi, row in enumerate(g):
            for coli, value in enumerate(row):
                sheet.write(rowi,coli,value)
        workbook.save(i + ".xls")

except: 
    print "epic_fail_Conversion", sys.exc_info()


for i in glob.glob ('/home/julien/excel/csv/*.xls'):
    shutil.copy2 (i, '/home/julien/excel/xls')

try:
    for j in glob.glob('/home/julien/excel/xls/*.xls'):
        os.rename (j, j.replace ('.csv', ''))

except: 
       print "epic_fail_Conversion", sys.exc_info()


print "End"
代码运行得很好,我有了新的excel文件

问题是我的行在转换过程中被修改了。 例如,“标记”行的内容是1,而不是1.00000。 此外,行“日期”的内容是2013年4月26日,而不是2013年4月26日

你知道我该怎么做才能保留csv文件的初始格式行吗


非常感谢。

您可以为日期和数字定义样式,然后使用条件应用样式。比如:

datestyle = xlwt.XFStyle()
datestyle.num_format_str = 'D/M/YYYY' 

numstyle = xlwt.XFStyle()
numstyle.num_format_str = '#,##0.0000'

....

for rowi, row in enumerate(g):
            for coli, value in enumerate(row):
                if coli == 0:  #or wherever your date is, if it's in a fixed spot
                    sheet.write(rowi,coli,value, datestyle)
                elif coli == 1: #or wherever your number is
                    sheet.write(rowi,coli,value, numstyle)
                else:
                    sheet.write(rowi,coli,value)

对不起,如果不太对,我写这篇文章的时候就要出门了。但希望它能帮你找到正确的方向。

这篇博客文章可能会有所帮助:谢谢你们!它最终通过使用“encoding='ascii'”子句工作。