Как объединить несколько списков и поместить их как один ключ в словарь? - PullRequest
1 голос
/ 13 апреля 2019

Я создаю мини-поисковик на языке Python. Для этого мне нужно решить следующую проблему. У меня есть в основном текст, который состоит из нескольких частей, разделенных "[==========]".

Как:

[blablabla][blabliblou][==========][blablablou][blibloubla][=========][oubabababa][baboulila]

Я хочу создать алгоритм, который объединит эти списки, пока мы не "нажмем" a "==========", и поместим их в словарь в виде единого ключа со значением "1" для первого списки, значение «2» для двух следующих списков и т.д ...

Если честно, я много чего пробовал, но не смог решить проблему. Не могли бы вы помочь мне?

Я пытался создать условные циклы, используя for и while

file = open("mytext.txt","r", encoding="utf-8")

dico = {}
counter = 0

for ln in file:
    x = ln.split()
    for x in file:
        print(dico)
        while x != "==========":
           dico[x] = counter
        else:
            dico[x] = counter + 1

print (dico)

Словарь все еще пуст, я не знаю почему!

1 Ответ

0 голосов
/ 13 апреля 2019

Вы можете попробовать использовать регулярные выражения.

import re
file = open("myfile.txt","r",encoding="utf-8")
dico = {}
data=file.read()
# split up string int a list of "stuff separated by one or more ="
keys = re.split(r"=+", data)
for i in range(len(keys)):
    dico[keys[i]] = i+1

ключи:

    ['[blablabla][blabliblou]', '[blablablou][blibloubla]', '[oubabababa][baboulila]']

Дико:

{'[blablabla][blabliblou]': 1, '[blablablou][blibloubla]': 2, '[oubabababa][baboulila]': 3}

edit: исправлено несколько синтаксических ошибок.

...