- ベストアンサー
Pythonのreadlineについて
- Pythonのreadlineを使ってテキストファイルの読み込みを行いたい
- 読み込んだテキストファイルの各行から特定の数字を抜き出して変数に格納したい
- 読み込みや数字の抜き出し方法についてのアドバイスをお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
readlines()は配列を返す関数なのでエラーになります。 lines =r.readlines() for line in lines: print line とすればどうでしょうか?
その他の回答 (1)
- grazie
- ベストアンサー率56% (200/355)
こんな感じでしょうか? line = 'a :0.5 , b : 0.8 , c: 0.9 ' objs = [] for s in line.split(','): lst = s.split(':') objs.append( dict.fromkeys(lst[0].strip(),lst[1].strip()) ) #objsが辞書のリストになります。 print objs print objs[0]['a'] print objs[1]['b'] print objs[2]['c']
お礼
grazie様、早速のご回答ありがとうございます。 すみません、初めて投稿したため、使い方が分からずにお礼を細くに書き込んでしまいました。 補足に詳細記載したのですが、1点分からないことがありまして、もし分かりましたら合わせてご教授いただけますと助かります。 宜しくお願いいたします。
補足
grazie様、早速のご回答ありがとうございます。 「split」で分ければいいんですね。基本的なことなのかもしれませんが、教えていただき非常に助かりました。 ただ、1点ご回答いただいた方法でうまくコンパイルはできたのですが、textファイルの読出しから行おうとすると、for s in line.split(','):の部分で以下のエラーが出てしまいます。(textファイルにはa :0.5 , b : 0.8 , c: 0.9と記載しております。) AttributeError: 'list' object has no attribute 'split' 変更点は、 line = 'a :0.5 , b : 0.8 , c: 0.9 ' の部分を f=open('sample.txt') line=f.readlines() f.close() に変更しただけなのですが、、、。 line=にした場合と、f=openでlineを指定した場合とでなにか違うのかと思い、textファイルから読みだした時のlineを出力してみると、 以下のようになっておりました。 ['a :0.5 , b : 0.8 , c: 0.9'] ご回答いただきました「line = 'a :0.5 , b : 0.8 , c: 0.9 '」のように直接代入した場合は a :0.5 , b : 0.8 , c: 0.9 と出力されるようですので、['と']の部分がsplitがうまく働かない要因かと思うのですが、readlines()で['~']の形で読み込まないよ うにすることはできるのでしょうか? もしくは['と']の部分をsplitで分けることを考えた方がよいでしょうか。 重ねての質問で申し訳ございませんが、もし分かりましたら教えていただけると助かります。 なお、Pythonは3.4を使用しております。
お礼
grazie様、度々のご回答ありがとうございました。 ご回答いただきました対応で、おかげ様でうまくいきました。 どうもありがとうございました、これで目的のプログラムが作成できそうです。