代码之家  ›  专栏  ›  技术社区  ›  Kevin Müller

将csv转换为xlsx;拆分为不同的列

  •  1
  • Kevin Müller  · 技术社区  · 7 年前

    我确实在这里找到了很多帮助,但我有一个主要的问题。

    我的csv文件有一些数据存储在不同的列中。如果我在python中将该文件转换为xlsx,那么所有数据都会放在一列中,中间有一个“;”。 但是如何在xlsx文件中保留列呢?

    如果我打开csv文件并将其另存为xlsx,它也可以工作,而且一切都保持不变。

    编辑:

    import os
    import glob
    import csv
    from xlsxwriter.workbook import Workbook
    
    for csv_f in glob.glob(os.path.join('.', '*.csv')):
        workbook = Workbook(csv_f[:-4] + '.xlsx')
        worksheet = workbook.add_worksheet()
        with open(csv_f, 'rt', encoding='utf8') as f:
            reader = csv.reader(f)
            for r, row in enumerate(reader):
                for c, col in enumerate(row):
                    worksheet.write(r, c, col)
        workbook.close()
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Alex    7 年前

    这就是如何通过 xlsxwriter

    import os
    import glob
    import csv
    from xlsxwriter.workbook import Workbook
    
    
        for csv_f in glob.glob(os.path.join('.', '*.csv')):
            workbook = Workbook(csv_f[:-4] + '.xlsx')
            worksheet = workbook.add_worksheet()
            with open(csv_f, 'rt', encoding='utf8') as f:
                reader = csv.reader(f)
                for r, row in enumerate(reader):
                    for c, col in enumerate(row):
                        worksheet.write(r, c, col)
            workbook.close()
    
        2
  •  0
  •   Kevin Müller    7 年前

    我修好了!

    import os
    import glob
    import csv
    from xlsxwriter.workbook import Workbook
    
    
    for csvfile in glob.glob(os.path.join('.', '*.csv')):
       workbook = Workbook(csvfile[:-4] + '.xlsx')
       worksheet = workbook.add_worksheet()
       with open(csvfile, 'rt', encoding='utf8') as f:
           reader = csv.reader(f, delimiter=";")
           for r, row in enumerate(reader):
               for c, col in enumerate(row):
                   str(worksheet.write(r, c, col)).split(";")
       workbook.close()
    

    这里最重要的是 "delimiter=";" 在那行:

    reader = csv.reader(f, delimiter=";")
    
    推荐文章