こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Pythonのreadlineについて

最近Pythonのプログラミングを始めたのですが、Pythonのプログラミングについて以下のことを行いたいのですが、やり方が分からず困っております。

Pythonで行いこと
1.textファイルに例えば以下のようにいくつかの係数を入力しておきます。
a:0.5, b:0.8, c:0.9

2.上記のテキストファイルを読み込み、pythonの変数a、b、cに値を格納したいと考えています。

色々検索している中でテキストファイルの読み込みはf=open(xxx.txt)で読み込み、各行の読み込みはreadline()というコマンドでできることは分かったのですが、lines=f.readline()とした後、その"line"の中からaが0.5、bが0.8という数字部分だけを切り出してプログラム中の変数に渡す方法が分からない状態です。

皆様のお知恵を拝借いたしたく、宜しくお願いいたします。

投稿日時 - 2015-04-17 08:14:18

QNo.8957249

困ってます

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

readlines()は配列を返す関数なのでエラーになります。

lines =r.readlines()
for line in lines:
print line

とすればどうでしょうか?

投稿日時 - 2015-04-17 19:42:43

お礼

grazie様、度々のご回答ありがとうございました。
ご回答いただきました対応で、おかげ様でうまくいきました。
どうもありがとうございました、これで目的のプログラムが作成できそうです。

投稿日時 - 2015-04-17 22:36:58

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんな感じでしょうか?

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']

投稿日時 - 2015-04-17 13:10:14

補足

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を使用しております。

投稿日時 - 2015-04-17 17:04:41

お礼

grazie様、早速のご回答ありがとうございます。
すみません、初めて投稿したため、使い方が分からずにお礼を細くに書き込んでしまいました。
補足に詳細記載したのですが、1点分からないことがありまして、もし分かりましたら合わせてご教授いただけますと助かります。
宜しくお願いいたします。

投稿日時 - 2015-04-17 17:07:39

あなたにオススメの質問