【问题标题】:read csv file with header and data, and convert to xls file读取带有标题和数据的csv文件,并转换为xls文件
【发布时间】:2013-01-13 19:54:42
【问题描述】:

我有带有 2 行标题、未知行数和列数的 csv 数据文件。例如

"x", "y"
"unit x", "unit y"
1, 2
3, 4

我使用以下代码读取csv文件并将其写入xls文件

import csv, xlwt

f = open('example.csv', 'rb')
reader = csv.reader(f)

workbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet 1")

for rowi, row in enumerate(reader):
    for coli, value in enumerate(row):
        sheet.write(rowi,coli,value)

workbook.save("example.xls")

问题是它把我所有的数据都写成 xls 中的文本。如何将文本转换为数字?我知道前 2 行是标题,数据从第 3 行开始到最后。我该怎么做?

【问题讨论】:

  • 我知道已经有一个类似的问题,但不一样,答案不适用于我的情况。

标签: python csv xlwt


【解决方案1】:

您可以检查您是否在第 3 行,然后将 value 转换为 int。

for rowi, row in enumerate(reader):
    for coli, value in enumerate(row):
        if rowi >= 2:
            value = int(value)
        sheet.write(rowi, coli, value)

您也可以尝试将所有值转换为数字。

for rowi, row in enumerate(reader):
    for coli, value in enumerate(row):
        try:
            value = int(value)
        except ValueError as e:
            pass
        sheet.write(rowi, coli, value)

【讨论】:

  • 谢谢!这可行,尽管检查每一行的 if 语句似乎有点多余。也许我应该只写循环前的前 2 行,并将循环仅用于数据部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多