我有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'}
我只是想知道我的最后一段去了哪里?我可以将最后一段文字存储到任何变量中吗?感谢
答案 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开始我的回答,并将值设置为列表,以便您可以跟踪任何未键入的值,但是,如果您的格式是一致的,那么上面应该可以。