2017-12-12 12 views
0

私は2行のテキストを持つtxtファイルを持っています。このテキストファイルの各行をクラスにしたい。私は各行をリストにしました。リストの各要素をクラスの一部にします。Pythonどのようにしてtxtファイルから派生したリストからクラスを作成できますか?

私のテキストファイルは次のようになります。

VardagsrumsTV/Pengar AR INTEオルタ/ SVT 1/4
KöksTv/音楽は、私はこのファイルを読み込み、行ごとにクラスを作成することになって、別のファイルのthatsを持って生活/ TV3/1

です。そのプログラムはこのように見えます。

class TV_apparat(object): 
    def __init__(self, name, program, kanal, volym): 
     self.name=name 
     self.program=program 
     self.kanal=kanal 
     self.volym=volym 
    def __repr__(self): 
     return "%s: \n Tv-program: %s \n Kanal: %s \n Ljudvolymen: %s " % (self.name, self.program, self.kanal,self.volym) 

filename=open("TVinfo.txt", "r") 
Tvinfo=filename.read() 
filename.close() 
Tvinfo = [line.split("/") for line in Tvinfo.split("\n")] 

print (Tvinfo) 
tvList=[] 
for rad in Tvinfo: 
    tvList.append(TV_apparat(rad[0],rad[1],rad[2],int(rad[3]))) 
    break 

TVclasses = dict([(TV, TV_apparat(name)) for TVs in tvList]) 
print (TVclasses) 

私が望むのは、各行がTV_apparatのクラスオブジェクトになることです。

だから私は名前= VardagsrumsTVとVardagsrumsTVと呼ばれる一つのクラス、プログラム= Pengar AR INTEオルタ、KANAL = SVT 1と名前=KöksTvとvolym = 4 と一つのクラス、プログラム=音楽が人生で、KANAL = TV3とvolym = 1

これはこれまでのところです。 [['VardagsrumsTV'、 'Pengarärinte allt'、 'Svt 1'、4 ']、['KöksTv '、私はのような形のクラスを取得するために何ができる、 'TV3'、 '1']、[ '']]

(これらのスウェーデン語の文字と非常によく働いてUTF-8イマイチ)

'音楽は人生です'私それらを欲しいですか?

答えて

0

最も簡単な方法は、__init__()メソッド内のライン解析ロジックを移動することです。ここで

例:

class TV_apparat(object): 
    def __init__(self, line): 
     self.name, self.program, self.kanal, self.volym = line.strip().split("/") 
    def __repr__(self): 
     return "%s: \n Tv-program: %s \n Kanal: %s \n Ljudvolymen: %s " % (self.name, self.program, self.kanal,self.volym) 


filename = "TVinfo.txt" 
tvList=[] 
with open(filename, 'r') as f: 
    for line in f: 
     if not line.startswith('\n'): 
      tvList.append(TV_apparat(line)) 
関連する問題