想要将最后一段存储到任何变量

时间:2011-11-07 16:27:29

标签: python regex dictionary

我有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())

这是输出,从文本转换为dict

 {'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'}

我只是想知道我的最后一段去了哪里?我可以将最后一段文字存储到任何变量中吗?感谢

2 个答案:

答案 0 :(得分:1)

您不是将文本存储在底部。您为字典条目指定值的唯一位置是在if len(temp)== 2之下。由于该文本段落没有等号,因此该部分将完全落空并且不会执行任何操作。你需要在那里的'其他'

答案 1 :(得分: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”。我使用collections模块中的defaultdict开始我的回答,并将值设置为列表,以便您可以跟踪任何未键入的值,但是,如果您的格式是一致的,那么上面应该可以。