0

我需要帮助,我应该将文本文件转换为字典。问题是文本文件只是一行我想要分隔的多个字符。

这是文本文件:

A2.-B4-...C4-.-.D3-..E1.F4..-.G3--.H4....I2..J4.---
K3-.-L4.-..M2--N2-.O3---P4.--.Q4--.-R3.-.S3...T1-
U3..-V4...-W3.--X4-..-Y4-.--Z4--..Å5.--.-Ä4.-.-
Ö4---.15.----25..---35...--45....-55.....65-....
75--...85---..95----.05-----.6.-.-.-,6--..--?6..--..!5..--.

行中没有空格!我想要这种格式的字典中的文件:

'A': '.-'
'B': '-...'

等等...

我想我可以检查文件中的数字。如果我遇到一个,我想检查它后面是否有数字。'A2.-15.----'

如果它后面没有数字:那么我想将数字前面的字符存储为“键”,并且我想在数字后面存储与数字本身相同数量的字符作为“值”。'A' = '.-'

如果有:我想将第一个数字存储为“值”,然后存储与下一个数字相同数量的字符(数字后面的字符)

'1':'.----'

问题是整行是列表中的一个元素(也是唯一一个)。所以我不能使用索引在字符串中移动。到目前为止,这是我的代码:

file = open('morse.d.txt')
s = file.read()
l = s.split()
element = l[0]

for char in element:
    if char.isdigit():
        #Check the character after
4

1 回答 1

2

您可以使用正则表达式来完成这项工作:

In [1]: import re

In [2]: s="""
   ...: A2.-B4-...C4-.-.D3-..E1.F4..-.G3--.H4....I2..J4.---
   ...: K3-.-L4.-..M2--N2-.O3---P4.--.Q4--.-R3.-.S3...T1-
   ...: U3..-V4...-W3.--X4-..-Y4-.--Z4--..Å5.--.-Ä4.-.-
   ...: Ö4---.15.----25..---35...--45....-55.....65-....
   ...: 75--...85---..95----.05-----.6.-.-.-,6--..--?6..--..!5..--."""

In [3]: re.findall("([^\.-]+)([\.-]+)", s)
Out[3]: 
[('A2', '.-'),
 ('B4', '-...'),
 ('C4', '-.-.'),
 ('D3', '-..'),
...
 ('6', '.-.-.-'),
 (',6', '--..--'),
 ('?6', '..--..'),
 ('!5', '..--.')]

并且刚刚通过该结果以dict获取字典。

于 2013-11-05T15:36:21.090 回答