15
csvfile_ = open(finishedFileName+num+".csv","w",newline='')
writ = csv.writer(csvfile_, dialect='excel')
firstline = unicode(str(firstline))
try:
    writ.writerow(firstline)
except TypeError:
    print firstline
    print type(firstline)
    raise

私はTypeError: must be unicode, not strこのコードで取得します。最初の行のタイプを印刷すると、 が表示されます<type 'unicode'>。最初の行を印刷するとわかります['project_number', 'project_location'](リストはそれよりも長くなりますが、そのスタイルで続きます。)

このプログラムは、python 3.3 で正常に動作していました。私は3to2で移植し、そのようにunixからwindowsに切り替えました。

このプログラムをスムーズに書くにはどうすればよいですか?

注: 公式ドキュメントによると、このバージョンの csv モジュールは Unicode 入力をサポートしていませんが、とにかく Unicode 入力を指定するように指示されました。

完全な例外

Traceback (most recent call last):
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 382, in <module>
    process(marketingLogExportFileName)
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 123, in process
    writing(csvfile,modified,firstline)
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 114, in writing
    writ.writerow(firstline)
TypeError: must be unicode, not str

最初のユニコードを作成するコードを取り出すと、代わりに

Traceback (most recent call last):
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 382, in <module>
    process(marketingLogExportFileName)
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 123, in process
    writing(csvfile_,modified,firstline)
  File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 114, in writing
    writ.writerow(firstline)
TypeError: must be unicode, not str
4

3 に答える 3