将文本转换为python中的数字

input是一个文本表 – 一些列是数字和一些文本。 我有python脚本将此文本文件转换为xlsx。 在Excel或Libre中打开后,所有字段都是文本。 有没有任何选项将某些列转换为数字?

cat script.py:

import csv import sys from xlsxwriter.workbook import Workbook # Add some command-line logic to read the file names. tsv_file = sys.argv[1] xlsx_file = sys.argv[2] # Create an XlsxWriter workbook object and add a worksheet. workbook = Workbook(xlsx_file) worksheet = workbook.add_worksheet() # Create a TSV file reader. tsv_reader = csv.reader(open(tsv_file, 'rb'), delimiter='\t') # Read the row data from the TSV file and write it to the XLSX file. for row, data in enumerate(tsv_reader): worksheet.write_row(row, 0, data) # Close the XLSX file. workbook.close() 

运行脚本:

 python script.py in.txt out.xlsx 

我想改变脚本将一些列转换为文本,一些转换为数字,并保持xlsx格式。 任何想法如何做到这一点?

您可以使用strings_to_numbers XlsxWriter构造函数选项。 从文档 :

strings_to_numbers :启用worksheet.write()方法将string转换为数字,如有可能,使用float()以避免有关“存储为文本的数字”的Excel警告。 默认是False。 要启用此选项,请使用:

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

例:

 import xlsxwriter workbook = xlsxwriter.Workbook('test.xlsx', {'strings_to_numbers': True}) worksheet = workbook.add_worksheet() worksheet.write(0, 0, 'Hello') worksheet.write(1, 0, '123') # Write this string as a number. workbook.close() 

输出:

在这里输入图像说明

根据文档,您需要添加数字格式,并在编写需要数字格式的单元格时使用它。

 # Add a number format for cells with money. money = workbook.add_format({'num_format': '$#,##0'}) ... worksheet.write(row_idx, col_idx, your_value, money) 

请参阅教程2:将格式添加到XLSX文件