想将最后一段存储到变量中
我有一段很长的文字,想把它转换成字典格式。
下面是我的代码:
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'}
我只想知道我的最后一段文字去哪儿了?我能把最后一段的文字存到一个变量里吗?谢谢!
2 个回答
1
你没有把底部的文本存起来。你只在 if len(temp) == 2 这个条件下给字典里的值赋值。因为那个文本段落没有等号,所以这个部分就会被跳过,什么都不会发生。你需要在那儿加一个 'else'。
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,并把值设置为列表,这样可以记录任何没有键的值。不过,如果你的格式是统一的,那么上面的方式应该就可以用了。