簡體   English   中英

使用 xlsxwriter 更改要導出的數據類型

[英]Changing data type to export using 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

使用 XlsxWriter 執行此操作的一種簡單方法是使用strings_to_number構造函數選項。 來自 XlsxWriter文檔

strings_to_numbers :啟用worksheet.write()方法,在可能的情況下使用float()將字符串轉換為數字,以避免出現有關“數字存儲為文本”的 Excel 警告。 默認值為假。 要啟用此選項,請使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM