2011-11-07 4 views
0

私にはlong textがあります。そして、私はこの文字列をdictに変換しています。ここで最後の段落を任意の変数に保存したい

は、ここでは、コード

data_dict = {}  
filter_dict = {}  
for each in text.split("\n"): 
    temp = each.split('=') 
    if len(temp) == 2: 
     data_dict[temp[0]] = temp[1] 
data = dict((k.strip(), v.strip()) for k, v in data_dict.iteritems()) 

である私はちょうど私の最後の段落がなくなっている場所を知りたい

{'producer': 'Sailadhar Baruah', 
'image': 'paporithefilm.jpg', 
'distributor': '', 
'alt': '', 
'image size': '', 
'gross': '', 
'writer': 'Jahnu Barua', 
'cinematography': 'Binod Pradhan', 
'music': 'Satya Baruah P. P. Vidyanathan', 
'followed by': '', 
'narrator': '', 
'director': 'Jahnu Barua', 
'released': '1986', 
'studio': 'Dolphin s Pvt. Ltd', 
'starring': 'Gopi Desai Biju Phukan Sushil Goswami Chetana Das Dulal Roy', 
'editing': '', 
'name': 'Papori', 
'language': 'Assamese languageAssamese', 
'country': 'Assam, IND', 'budget': '', 
'caption': 'A Screenshot', 
'preceded by': '', 
'runtime': '144 minutes'} 

をのdictには、テキストから変換され出力されますか?最後の段落テキストを任意の変数に格納できますか?ありがとう

+1

あなたの最後の段落は、あなたが期待しているような 'key = value'フォーマットを持っていません。あるいは、' '続いて' 'の値を調べる最後の段落ですか? – sberry

+0

解析しようとしていたテキスト:プレーンテキストであるのか、それともXMLであるのですか?あなたが提供したdpasteリンクでは、構文がXMLであると言います。 – shimofuri

+0

@shimofuriそのプレーンテキスト。 –

答えて

1

指摘したように、key = value形式の場合のみ一致します。代わりにこのようなものを試してみてください。

text = file("text.txt", "r").readlines() 

skip_keys = ('film', '') 
data_dict = {} 
for each in text: 
    temp = [x.strip() for x in each.split('=')] 
    if temp[0] in skip_keys: 
     continue 
    if len(temp) == 2: 
     data_dict[temp[0]] = temp[1] 
    else: 
     data_dict['no_key'] = temp[0] 
print data_dict 

ここで、段落は「no_key」に追加されます。私は、コレクションモジュールからdefaultdictを使って答えを出し始めました。そして値がリストになるように値を設定しました。しかし、あなたのフォーマットが一貫していれば、上記がうまくいくはずです。

1

テキストを下部に保存していません。辞書エントリに値を割り当てる唯一の場所は、if len(temp)== 2の下にあります。そのテキスト段落に等号がないので、この部分は単に抜けて何も行われません。どこか他の場所に「else」が必要です

関連する問題