python3でnumpy.genfromtxt()
を使用して、異なる日付のデータを含むファイルを読み込もうとしています。ファイルには、基本的にnumpy.genfromtxt()を使用してPython 3でUTF-8ファイルを読み込み
Date,Open,High,Low,Close,Volume
1-Apr-15,108.33,108.66,108.33,108.66,290
のように見えるが-
としてマークされた欠損値が含まれていてもよいです。
次のコードはpython2
str2date = lambda x: datetime.strptime(x, '%d-%b-%y').strftime('%Y-%m-%d')
data = np.genfromtxt('test.dat', dtype="S9,f8,f8,f8,f8,f8", delimiter=',', names=True, missing_values='-', converters={0: str2date})
で正常に動作しますが、デフォルトのエンコードおよび入力のためのエンコーディングを設定することにより、提案された解決策として
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
locale.getpreferredencoding(False)
戻りUTF-8でのpython3に失敗しますたとえば、hereのようなストリームは少しトリッキーです。私はまた、encoding of the terminalを成功裏に設定しようとしました。 this answerに私の問題の解決策が見当たらないことを認めなければなりません。なぜならファイルに特殊文字が含まれていないからです。少なくとも私はそれらを見ません。
どうすればこの問題をpython2に戻すことなく解決できますか?
あなたが開いている(genfromtxtを試してみました( 'test.dat'、encoding = 'utf-8'))、...より効率的、 pandas.read_csv? –
'genfromtxt(open( 'test.dat'、encoding = 'utf-8')) 'は文字列の代わりに文字列を提供しますが、pandasは魅力的です。それを答えに入れると、私はそれを受け入れます。 – Martin
'genfromtxt'はファイルをバイナリモードで開き、バイトテスト(Py3)で動作します。 https://stackoverflow.com/questions/33001373/loading-utf-8-file-in-python-3-using-numpy-genfromtxtの「コンバータ」ソリューションは役に立ちませんか? – hpaulj