Как прочитать один символ из файла как ключ в словаре, а затем сделать следующие n символов его значением? - PullRequest
0 голосов
/ 13 ноября 2018

Допустим, у нас есть файл .txt следующим образом (все в одной строке):

A2.)43@|@C3::#

Таким образом, мы хотим, чтобы «A» было ключом для значения «.)» И «4» в качестве ключадля значения "@ | @" и т. д. Число после ключа говорит нам, сколько символов нужно прочитать как значение, а символ после - это ключ для следующего элемента в словаре.

ВещиЯ борюсь с написанием цикла.Я думаю, что мы могли бы хотеть итерировать по длине файла, используя цикл for.Но я не знаю, как поступить.

1 Ответ

0 голосов
/ 13 ноября 2018

Это сработало для меня

stringText = "A2.)43@|@C3::#"


i=0
myDictionary = {}


while True:
    try:
        #First we grab the key character using i
        keyCharacter = stringText[i]

        #Then we grab the next character which will tell us how many characters they value will have
        # We also convert it to integer for future use
        valueLength = int(stringText[i+1])

        #Then we grab the value by slicing the string
        valueCharacters = stringText[i+2:i+2+valueLength]

        #We add this to the dictionary
        myDictionary[keyCharacter] = valueCharacters

        #We update i to continue where we left off
        i = i+2+valueLength


    except IndexError:
        break

print myDictionary

Вместо «попробуй и не считай» вы также можете увидеть, как долго эта строка и делает, и оператор if, чтобы разорвать цикл, когда я больше, чем длина строки.

...