更改数据类型以使用xlsxwriter

时间:2019-11-21 11:03:25

标签: python xlsxwriter

因此,我一直在与我认为过去一个半小时内应该解决的简单问题作斗争。本质上,我正在构建一个从网站抓取的列表,其中涉及名称和数字。在抓取它们时,它们将存储在字符串列表中。我使用xlsxwriter来构建包含来自多个网页的数据的多页工作簿。我似乎无法隔离其中带有“数字”的列表项并将它们转换为浮点数。我昨天才刚开始学习Python,所以很可能我只是错过了一些小东西。我希望数字可以作为数字导出到excel工作表中,以便于使用。

我本质上是想区分实际的文本字符串和数字字符串,并将包含数字的字符串转换为浮点数。到目前为止,我尝试使用x [0],x [:0]和x [:1]隔离第一个字符,以在下面显示的if语句中对其进行测试。但是,当我在调试时进入代码的那个阶段时,实际上并没有将其转换为浮点数。

# Function to check if string is number and convert
def checknum(x):
    y = x
    x = x[:1]
    if x in ['0','1','2','3','4','5','6','7','8','9','0']:
        x = float(x)
        return x
    else:
        return y

# How it's being used in my main program
row = 1
col = 0
for tr in soup.findAll('tr'):
    stats = []
    for td in tr.findAll('td'):
        stats.append(td.text)
    if stats:
        col = 0
        for item in stats:
            checknum(item)
            if isinstance(item, float):
                worksheet.write_number(row, col, item)
            else:
                worksheet.write(row, col, item)
            col += 1
        row += 1

1 个答案:

答案 0 :(得分:0)

使用XlsxWriter进行此操作的一种简单方法是使用strings_to_number构造器选项。从XlsxWriter docs

  

strings_to_numbers :启用worksheet.write()方法以在可能的情况下使用float()将字符串转换为数字,以避免Excel关于“数字存储为文本”的警告。默认值为False。要启用此选项,请使用:

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})