2017-01-12 9 views
0

に書き込むことが可能とxlwt 1.2.0、次のエラーが生成されます。 "Cannot convert byte objects to str implicitly"コードは、Python 2.7のため正常に動作します。 誰かが問題の原因を教えてください。 ありがとうございました!Pythonコードではなく、以下のコードはPython 3.5で実行された場合XLS

import xlwt 
    import re 
    import os 

    wb = xlwt.Workbook() 
    ws = wb.add_sheet('A Test Sheet') 
    ws_1 = wb.add_sheet('A Test Sheet_B') 
    cnt_row = 0 
    cnt_col_1 = 0 
    cnt_col_2 = 0 


    path = "E:\Python_Scripts" 
    files = os.listdir("E:\Python_Scripts") 
    for filename in files: 
     if filename.endswith(".ptu"): 
      fo = open(os.path.join(path, filename), 'r') 

      while(1): 
       str = fo.readline() 
       if (str == ""): 
        print ("file finished") 
        break 
       else: 
        matchObj = re.match(r'\s* TEST (.*?).*', str) 
        if (matchObj): 
         str = str.split('TEST', 1)[1] 
         ws.write(cnt_row, 0, str) 
         matchObj_Author = re.match(r' (.*) Author (.*?).*', str) 
        if (matchObj_Author): 
         str = str.split('(', 1)[1] 
         str = str.rsplit(')', 1) 
         ws.write(cnt_row, 1, str) 
         cnt_row = cnt_row + 1 

      fo.close() 
    wb.save('example.xls') 
+0

full stacktrace please ... –

+0

私は今完全なエラー情報を持っていません。問題は最終行で、wb.save( 'example.xls').... – pradeep

+0

あなたのxlwtバージョンが一致するものPython 3?どのようにインストールを実行しましたか? –

答えて

1

データ入力が変更されました。その行の1つ以上に複数の文字列が含まれています。

ファイルに複数のエントリがあるファイルを読んでいる場合、strは文字列ではなくリストになります。それがリストである場合wb.save(「example.xls」)を呼び出すときに、このエラーが発生します:

import xlwt 
wb = xlwt.Workbook() 
ws = wb.add_sheet('A Test Sheet') 
ws_1 = wb.add_sheet('A Test Sheet_B') 
cnt_row = 0 
cnt_col_1 = 0 
cnt_col_2 = 0 

f = open('<an xml file with one string per line except the last line which has two strings', 'r', encoding='utf-8') 
while 1: 

    str = f.readline() 
    wb.save('example.xls') 
    if str == "": 
     print ("file finished") 
     break 
    str = str.split('<', 1)[1] 
    str = str.rsplit('<', 1) 
    ws.write(cnt_row, 1, str) 
    cnt_row = cnt_row + 1 
    print('debug:last') 
    print(str) 
    print(type(str)) 

wb.save('example.xls') 
f.close() 
TypeError: must be str, not bytes

をここに私はこれをテストするために使用されるプログラムの下に切り詰めたバージョンです

+0

OPのコード中のOPコード –

+0

@ Jeanの中のいつでも 'str'がリストであるとは思わないでしょう。' str = str.rsplit( ')'、1) '? –

+0

はい、そうです。良い発見。 –

関連する問題