【问题标题】:Turn a file into dictionary把文件变成字典
【发布时间】:2018-11-07 16:23:48
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 Stackoverflow!您想发布一些在您的文件中按原样格式化的数据,并给我们一个所需输出的示例吗?
  • 我无法从这里看到您的屏幕,您可以发布您尝试过的内容、文件的外观、您想要的输出、您想要的目录吗?跨度>

标签: python file dictionary


【解决方案1】:

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

有关正则表达式的更多解释,我建议阅读"Regular Expression HOWTO" by A. M. Kuchling,非常棒。

【讨论】:

  • 哇,这看起来真的很优雅!我从来没有听说过正则表达式......但它看起来是处理文本中不同模式的一个非常好的工具。我试过谷歌来理解 r'(\w)\d+([-.]+)' 的含义,但我并不完全理解。您能否解释一下提及代码的不同部分的含义?我真的很感谢你的帮助:)
  • @gdom 我添加了正则表达式的简短说明,以及一个指向更详细的正则表达式文本的链接,供初学者使用。如果我的回答对您有好处,请考虑将其标记为已接受以结束问题。
【解决方案2】:

当您在 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 dd[sline[0]] = sline[1]。如果您采用此解决方案但对解决方案的这一部分有疑问,我认为这可能需要一个单独的问题。

【讨论】:

    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 2019-07-25
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2012-09-16
    相关资源
    最近更新 更多