【问题标题】:How to convert strings to numbers, when taking data from .csv to .xlsx, using openpyxl使用openpyxl将数据从.csv转换为.xlsx时如何将字符串转换为数字
【发布时间】:2016-07-11 23:08:43
【问题描述】:

我编写此代码以获取存储在 .csv 文件中的信息并将其放入 .xlsx 文件中。当它在 excel 文档中时,所有信息都是字符串。我想不出一种将它们更改为数字的方法,因此我可以使用 openpyxl 来创建折线图。这是代码

import openpyxl
import csv

examplefile = open('output.csv')
exampleReader = csv.reader(examplefile)
exampleData = list(exampleReader)


wb = openpyxl.load_workbook('open.xlsx')
ws = wb.get_sheet_by_name('Sheet1')

for i in range (1,9):
    for h in range(1, 5):
        a = i-1
        b = h-1
        ws.cell(row=i, column=h).value = exampleData[a][b]


wb.save('practice.xlsx')

这是csv文件

Date,Temp,Min Temp,Max Temp
2016-07-11,288.69,287.68,288.69
2016-07-12,289.55,288.79,289.55
2016-07-13,294.3,293.79,294.3
2016-07-14,296.35,296.098,296.35
2016-07-15,291.824,291.824,291.824
2016-07-16,293.373,293.373,293.373
2016-07-17,291.808,291.808,291.808

我也知道这不是从 a 到 b 获取数据的最有效方法,所以如果有任何关于如何更好地做到这一点的建议,请包括这些。

【问题讨论】:

  • 您可以使用 openpyxl 中的guess_types 参数让它为您处理转换。 YMMV。

标签: python excel csv openpyxl


【解决方案1】:

CSV 阅读器将文件读入二维列表,其中每一行代表一行。数据被读入并存储为字符串。因此,您需要将值显式转换为所需的类型,如下所示:

ws.cell(row=i, column=h).value = float(exampleData[a][b])

看这里以获得进一步的解释:Python import csv to list

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2018-03-29
    • 2013-05-05
    • 2023-03-07
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多