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을 설정하려고했습니다. 나는 또한 파일에 포함 된 특수 문자가 없기 때문에 나는 내 문제에 대한 해결책을 보지 못한다는 것을 인정해야한다. 적어도 나는 그들을 보지 못한다.
어떻게하면 python2로 되돌아 가지 않고이 문제를 해결할 수 있습니까? 내가 날짜 변환 문제를 얻을 코드를 재생하려고하면
그것은 정의되지 않은 이유에 대한 아스키 모드에 빠진다 genfromtxt이 보인다 (당신이 genfromtxt을 시도 열려 :
당신은 컨버터의
decode
과 전에 몇 년에서 내 게시물을 발견 ('test.dat', encoding = 'utf-8'), ...?보다 효율적인, pandas.read_csv? –'genfromtxt (open ('test.dat', encoding = 'utf-8')) '문자열 대신에 제공되는 바이트에 대해 불평하지만 팬더는 매력처럼 작동합니다. 당신은 대답에 그것을 넣을 것입니다. 나는 그것을 받아 들일 것입니다. – Martin
'genfromtxt'는 바이너리 모드로 파일을 열고 bytestrings (Py3)과 함께 작동합니다. https://stackoverflow.com/questions/33001373/loading-utf-8-file-in-python-3-using-numpy-genfromtxt의 '변환기'솔루션이 도움이되지 않습니까? – hpaulj