将文件转换成字典

时间:2018-11-07 16:23:49

标签: python file dictionary

我真的是Python的新手,我有一个问题。我需要转换一个包含莫尔斯电码字母的文件。这是一个包含单个字符串的文件,看起来像这样(A2.-B4-...C4-.-.D3-..)。我在想应该可以从该文件中创建字典,但不确定如何。你们有什么主意吗?

2 个答案:

答案 0 :(得分:0)

这种方法使用正则表达式来解析您的整个字符串并将其直接转换为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)表示我们想捕获这一部分,\w表示任何字母数字
  • \d+在这里,\d表示任何数字,而+符号表示一个或多个
  • ([-.]+)再次意味着我们想要捕获这一部分,[-.]意味着我们想要.-,而+再次意味着我们想要一个或更多。

有关正则表达式的更多解释,我建议阅读"Regular Expression HOWTO" by A. M. Kuchling,这是一本很好的书。

答案 1 :(得分:-1)

在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]

在此示例的最后两行中,我假设您想要一个dict,其中键(查找)始终位于每行的“-”之前,而值(待查找)始终位于之后。在此假设下,我line.split("-"),然后用d将那些键和值分配给字典d[sline[0]] = sline[1]。如果您采用此解决方案,但对解决方案的这一部分有疑问,那么我认为这可能需要一个单独的问题。