Превратить файл в словарь - PullRequest
0 голосов
/ 07 ноября 2018

Я действительно новичок в Python, и у меня есть вопрос. Мне нужно конвертировать файл, содержащий азбуку Морзе. Это файл с одной строкой, и он выглядит так (A2.-B4-...C4-.-.D3-..). Я думаю, что я должен быть в состоянии создать словарь из этого файла, но я не уверен, как. Ребята, у вас есть идеи?

Ответы [ 2 ]

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

Этот подход использует регулярное выражение, чтобы проанализировать всю строку и преобразовать ее в dict напрямую:

import re

with open('yourfile.txt') as f:
    data = f.read()

morse = dict(re.findall(r'(\w)\d+([-.]+)', data))
print(morse)

Результаты для ваших примеров:

{'A': '.-', 'C': '-.-.', 'B': '-...', 'D': '-..'}

Вот краткое объяснение регулярного выражения:

  • (\w) parens означает, что мы хотим захватить эту часть, \w означает любой алфавитно-цифровой
  • \d+ здесь \d означает любую цифру , а знак + означает одну или несколько
  • ([-.]+) снова parens означает, что мы хотим захватить эту часть, [-.] означает, что мы хотим . или -, а + снова означает, что мы хотим одну или несколько из них.

Для более подробного объяснения регулярных выражений я предлагаю прочитать "HOWTO о регулярных выражениях" А. М. Кучлинга , отличное чтение.

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

Когда вы открываете файлы в Python, их можно читать построчно, например:

d = {} # Init empty dict
with open("file.txt", "r") as file: # This manages the open/close, IO mode, et cetera
    for line in file: # Iterates through the file line by line
        # Now the variable line represents a string for that line
        sline = line.split("-")
        d[sline[0]] = sline[1]

В последних двух строках этого примера я предполагаю, что вы хотите указывать, где ключ (поиск) всегда находится перед «-» в каждой строке, а значение (для поиска) всегда после. Исходя из этого, я line.split("-"), а затем назначаю эти ключи и значения для dict d с d[sline[0]] = sline[1]. Если вы принимаете это решение, но у вас есть проблемы с этой частью решения, я думаю, что это может потребовать отдельного вопроса.

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