2017-05-10 12 views
1

入力はテキストテーブルです。いくつかの列は数字とテキストです。私はこのテキストファイルをxlsxに変換するためのpythonスクリプトを持っています。 ExcelまたはLibreで開くと、すべてのフィールドがテキストになります。いくつかの列を数値に変換するオプションはありますか?Pythonで数値に変換するテキスト

猫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() 

runスクリプト:

python script.py in.txt out.xlsx 

私はテキストといくつかの数字にとのxlsx形式を維持するためにいくつかの列を変換するためのスクリプトを変更したいと思います。どのようにそれを行うにはどのようなアイデア?

答えて

1

を参照してください。

strings_to_numbers : Enable the worksheet.write() method to convert strings to numbers, where possible, using float() in order to avoid an Excel warning about “Numbers Stored as Text”. The default is False. To enable this option use:

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

例:docsから

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() 

出力:

enter image description here

+0

こんにちは、コメントありがとうございました。この行をスクリプトに追加して実行しようとすると、エラーが発生します。NameError:name 'xlsxwriter'が定義されていません – Geroge

+0

xlsxwriter.Workbook(...はxlsxwriter.workbook(...に変更されました。Pythonは大文字と小文字を区別しますが、samエラーがまだあるためNameError:name 'xlsxwriter'は定義されていません 例外例外: 'ワークブック{、})バインドされたメソッドのワークブック.__ del__ of 0x7fbad4fd7c50 >>は無視されます。 – Geroge

+1

構文は正しいです。私はモジュールの作成者です。 – jmcnamara

1

ドキュメントによれば、数値形式を追加する必要があり、数値形式が必要なセルを書き込むときに使用する必要があります。

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

... 

worksheet.write(row_idx, col_idx, your_value, money) 

はあなたがstrings_to_numbers XlsxWriterコンストラクタオプションを使用することができますTutorial 2: Adding formatting to the XLSX File

関連する問題