Хотите сохранить последний абзац в любой переменной - PullRequest
0 голосов
/ 07 ноября 2011

у меня есть длинный текст . И я конвертирую эту строку в 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 ]

1 голос
/ 07 ноября 2011

Как уже было отмечено, вы подходите, только если у вас есть формат 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 голос
/ 07 ноября 2011

Вы не храните текст внизу. Единственное место, где вы присваиваете значения словарным записям, находится под if len (temp) == 2. Поскольку у этого текстового абзаца нет знака равенства, эта часть просто провалится и ничего не будет сделано. Вам нужно где-то еще "1001"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...