我真的是Python的新手,我有一个问题。我需要转换一个包含莫尔斯电码字母的文件。这是一个包含单个字符串的文件,看起来像这样(A2.-B4-...C4-.-.D3-..
)。我在想应该可以从该文件中创建字典,但不确定如何。你们有什么主意吗?
答案 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]
。如果您采用此解决方案,但对解决方案的这一部分有疑问,那么我认为这可能需要一个单独的问题。