• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Pythonでsplit()が効きません…)

Pythonでsplit()が効かない?原因と解決策を教えてください

このQ&Aのポイント
  • Pythonのsplit()メソッドを使ってローカルに保存したテキストファイルから文字列を読み込みたいのですが、うまく動作しません。
  • f.read().split('@')[0]の結果が空になってしまう原因は何でしょうか?
  • f.read().encode('utf-8').split('@')も同じ結果になります。どうすれば上手く動作させることができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

最初のf.read()でファイルの中身を全部読みだして、ファイルハンドラーがファイルの終端を現在の位置として指しているからではないでしょうか。 >>>print f.read() 1234@5678 PythonのファイルI/Oは、どこまで読んだかを覚えていて、これまで読んだ位置の次の位置から読めるようになっていると思います。 例えば、この実行結果はどうなると思いますか? >>>f = open('./local.txt', 'r') >>>print f.read(1) >>>print f.read(1) >>>print f.read(1) >>>print f.read(1) >>>print f.read(1) >>>f.close() データの中身がわかっているなら、こういうコードもありかもしれません。 >>>data = open('./local.txt').read().split('@') >>>print data[0] >>>print data[1]

bombrea
質問者

お礼

回答有難うございます。 >>>data = open('./local.txt').read().split('@') >>>print data[0] >>>print data[1] のやり方で出来ました。 >ファイルハンドラー 藪から棒が出てきた気分でプログラミングのディープさを垣間見ました。終端だと空の文字列を返すようですね。 read()に数値を入れるとこんな出力になるんですね。面白いです。

関連するQ&A