2016-07-12 8 views
2

私はpython2でプログラムを持っていますが、python3で書き直しています。私はnetcdfファイルを読み込み、変数を保存します。変数の1つは文字列でなければならず、その文字列を整数に変換する必要があります。Python 2からPython 3への変換時に文字列から整数を取得

nums = fid.variables['num'][:] 
>>> nums[0] 
>>> ['0','1','2','3'] 

Number = [int(''.join(t)) for t in nums] 
>>> Number[0] 
>>> 123 

しかし、パイソン3で、変数、 "NUMS" 出力:パイソン2では、私はこの方法を使用

>>>nums[0] 
>>>[b'0',b'1',b'2',b'3'] 

を、私はエラーを取得:では

TypeError: sequence item 0: expected str instance, numpy.bytes_ found 

バイトから文字列に型を変更するために、私は試しました:

newNum = [t.decode('UFT-8') for t in nums] 

私はエラーを取得:

AttributeError: 'numpy.ndarray' object has no attribute 'decode' 

質問:

私は整数に文字と数字の文字列を有効にするにはどうすればよいですか?あなたの編集を考える

+0

Pythonで元の動作を再現できません。2.7 –

+0

エラーは何ですか? – manateejoe

+0

'ValueError:基数10のint()のリテラルが無効です: 'FS0123'' –

答えて

1

、あなたの問題はNUMSは、コンテナのコンテナであるので、あなたのリストの内包が動作していない、私はネストされた理解を示唆するかもしれないということです?:

>>> nums = [[b'0',b'1',b'2',b'3'], [b'0',b'1',b'2',b'3']] 
>>> [[b.decode('utf8') for b in t] for t in nums] 
[['0', '1', '2', '3'], ['0', '1', '2', '3']] 

そのアプローチを使用して、あなたが行うことができます

>>> [int("".join(t)) for t in newNums] 
[123, 123] 
関連する問題