想将最后一段存储到变量中

0 投票
2 回答
870 浏览
提问于 2025-04-17 05:48

我有一段很长的文字,想把它转换成字典格式。

下面是我的代码:

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,并把值设置为列表,这样可以记录任何没有键的值。不过,如果你的格式是统一的,那么上面的方式应该就可以用了。

撰写回答