Shallow Learning

勉強の備忘録メイン

ヤシャスィーン

データ読み込みでハマった話

痛めていた腰が治ったので,2週間ぶりにスクワットやってきました. ケガ明けで輪をかけてショボい重量ですが,それでも楽しいからスクワットはすごい. みなさんもスクワットしましょう.

概要

Double Pipe(||)区切りファイルに出会い,読み込みでハマったのでメモ.

問題

pd.read_tableでDouble Pipe(||)区切りファイルを読み込もうとしたら怒られた.

X = pd.read_table('hogehoge.txt',
                  sep='||',
                  encoding='utf-8')
実行結果
__main__:3: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
Traceback (most recent call last):...

2文字以上の文字列(空白文字除く)はサポートされていないらしい. アドバイス通りにengine=‘python'としてもうまくいかなかったので,別の方法で実装することに.
一行目(フィールド名)だけカンマ区切りとかいうファイルな上,そう何度も使わないので関数は実装せず. おまけに改行コードも削除.

output = []
f = open('hogehoge.txt', encoding='utf-8')
i = 0
line = [f.readline().replace('\n','').split(',')]
output = line
while line:
    i += 1
    line = f.readline()
    tmp = line.replace('\n','').split('||')
    output.append(tmp)
f.close

hogehoge = pd.DataFrame(output[1:-1])
hogehoge.columns = [output[0]]

ちなみにpandasに文字数の制限はなく,メモリ上限値に依存するらしい. Spyderのプレビューで見ると途中で文字切れしているように見えるが,実際には切れていない.