2016-12-19 7 views
0

こんにちは、読んでいただきありがとうございます。Python:xlsxwriterを使用してtxtからインポートして1行ずつExcelにインポート

私はPythonのforループに問題があります。 私は.txtファイルを1行ずつ読み込み、worksheet.write_rowを使用して各行をExcelで読み込もうとしています。 私はこれを行うために他の多くの方法を試しましたが、このすべてにかなり新しいものです。これは私が理解するのが最も簡単です。

ファイルから1行だけを選択していたので、私が書いた "for"ループに何か問題があると確信しています。

私は考えることのできるループの編集をすべて試しましたが、何もできませんでした。私はウェブを研究しましたが、私が識別できる解決策を見つけることができませんでした。だから、どんな助けでも大歓迎です。

import xlsxwriter 

workbook = xlsxwriter.Workbook('pythonlinetest.xlsx')  #create file 
worksheet = workbook.add_worksheet()       #create worksheet 
data = open('160919-001 14cts c133_vi.txt','r')    #loaddata 

#count lines 
linelist = data.readlines() 
count = len(linelist) 
print count   #check lines 

#make each line and print in excel 
for n in range (0, len(linelist)) 
    line = linelist[n] 
    splitline = line.split("\t") 
    worksheet.write_row(row, 0, splitline) 
    row += 1 

>>>> Error: File "<ipython-input-4-abc8f489522d>", line 2 
    for n in range (0, len(linelist)) 
            ^
SyntaxError: invalid syntax 


#close workbook 
workbook.close() 

ありがとうございます!

+5

行末に ':'がありません。 –

+0

ありがとう!私はそれを固定して、forループが今働くようだ。それでも私はworkbook.close()にしようとするとエラーが発生します。 –

+0

私はエラーメッセージが表示されているのを見ました(ここに投稿するには時間がかかります)。 UnicodeDecodeError: 'ascii'コーデックは、位置33のバイト0xbaをデコードできません:序数が範囲内にありません(128) –

答えて

1

あなたは、エラーメッセージに記載されたその行の末尾に:が欠落している、

  1. をコメントで議論を書き込みます。
  2. 入力がasciiでない場合、デコード動作を無効にする必要があります。
  3. xlsxwriterの入力フォーマット動作を無効にするには、http://xlsxwriter.readthedocs.io/tutorial03.htmlを参照してください。
+0

これはおそらく、エンコーディングを扱う方法を示すより良い3つの例だと思います。http://xlsxwriter.readthedocs.io/example_unicode_shift_jis.html – jmcnamara

0

だから、Baris Demirayの助けを借りて、私はこの行を行単位でインポートすることができました。私は "º"記号に起因するデコードエラーがありました。これは今修正されました。誰かが興味を持っているなら、私は自分のコードを共有します。

唯一の問題は、.txtファイルに数字が含まれていると、excelが最初にこれを認識しないことです。もし誰かがこのコードを編集する方法を知っていれば、excelが数値の文字列を認識できるように自由に編集してください。

import xlsxwriter 

workbook = xlsxwriter.Workbook('test.xlsx')  #create file 
worksheet = workbook.add_worksheet()   #create worksheet 
data = open('your.txt','r')    #loaddata 

linelist = data.readlines()    #read each line 
count = len(linelist)     #count lines 
print count      #check number of lines 

for num in range (0, count):   #create each line and print in excel 
    line = linelist[num]   #load each line in variable 
    line = line.decode('latin1')   #decode problem solution 
    splitline = line.split("\t")   #split lines 
    worksheet.write_row(num, 0, splitline)   #write each line in excel 

workbook.close()   #close workbook 

これはそうかもしれませんが、おそらく誰かを助けてくれるかもしれません。私はこれを初めて知り、何年も何もプログラムしていないので、これを行うためのより良い方法があると確信しています。

関連する問題