簡體   English   中英

蟒蛇; 科學記數字符串到數字

[英]Python; scientific notation string to number

我目前正在將文件從csv轉換為xlsx。 問題是默認情況下數據已全部轉換為字符串。 如何將數字(通常顯示為+ 1.50000000000E + 009或“ + 1.50000000000E + 009”(前導空格))從字符串轉換為數字表示形式,我已經嘗試過類型轉換和常規解決方法,但沒有任何效果。

“ IF”語句是因為csv文件具有標頭。

def csv_to_excel(csv_path, delimiter, delimiter_txt, excel_path, excel_title):
csv_file = open(csv_path, 'r')
csv.register_dialect(delimiter_txt, delimiter=delimiter)

reader = csv.reader(csv_file, dialect=delimiter_txt)

wb = Workbook()

ws = wb.worksheets[0]
ws.title = excel_title
for row_index, row in enumerate(reader):
    for column_index, cell in enumerate(row):
        column_letter = get_column_letter((column_index + 1))
        if row_index > 3:
            ws.cell('%s%s'%(column_letter, (row_index + 1))).value = float(cell)
        else:
            ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell
        print(cell)
        print(type(cell))
wb.save(filename = excel_path)
csv_file.close()

csv_to_excel( 'FILE.CSV', '', '逗號', 'file.xlsx', '數據')

謝謝! 任何幫助將是巨大的!

您可以使用float()完成此操作。

>>> float("+1.50000000000E+009")
>>> 1500000000.0

應該使用float()

float("+1.50000000000E+009")

您也可以使用eval() ,但是,如果您不確定某個參數將傳遞的輸入類型,則可能有潛在的危險

eval("+1.50000000000E+009")

兩者都返回1500000000.0

暫無
暫無

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

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