0

文件如下所示:

BURGER KING
BRG
MCDONALDS
MCDNLDS
WENDYS
WNDY

例子:

food('abbreviations.txt')

Enter a fast food place: McDonalds

Abbreviation: MCDNLDS

Enter a fast food place:

Thank you!

至今:

infile = open(filename, 'r')

l = infile.readlines()

infile.close()

但我不知道在 readlines 之后该怎么做

4

3 回答 3

4

我不应该这样做,但我觉得这个练习很有趣。所以我们开始:

lines = [i.strip() for i in l if i.strip()]
abbrev = dict(zip(lines[0::2], lines[1::2]))

然后abbrev是一个字典/映射,您可以在其中通过查找全名作为键来获取缩写词。

如果你想理解这个陈述,我建议你在交互式 python shell 中分别尝试每个部分。

为懒惰的 StackOverflow 读者编辑

这是交互式会话示例,还有一些其他建议:

>>> infile = open("abbreviations.txt", "r")
>>> lines = [l.strip() for l in infile]
>>> lines
['BURGER KING', '', 'BRG', '', 'MCDONALDS', '', 'MCDNLDS', '', 'WENDYS', '', 'WNDY']
>>> lines[0::4]
['BURGER KING', 'MCDONALDS', 'WENDYS']
>>> lines[2::4]
['BRG', 'MCDNLDS', 'WNDY']
>>> zip(lines[0::4], lines[2::4])
[('BURGER KING', 'BRG'), ('MCDONALDS', 'MCDNLDS'), ('WENDYS', 'WNDY')]
>>> abbrev = dict(zip(lines[0::4], lines[2::4]))
>>> abbrev
{'MCDONALDS': 'MCDNLDS', 'WENDYS': 'WNDY', 'BURGER KING': 'BRG'}
>>> abbrev["WENDYS"]
'WNDY'
于 2012-05-24T22:39:10.690 回答
0

您可以成对读取行并将它们分别设为键和值,以添加到字典中。然后获取用户输入(在循环中)并在该字典中查找输入的字符串。

于 2012-05-24T22:38:05.713 回答
0

这是一个开始:

name_map = {}
last_line = False
for line in file.readlines():
    line = line.strip()

    if not line:
        # Blank line
        continue

    if not last_line:
        last_line = line
    else:
        name_map[last_line] = line
        last_line = False

真的,您应该使用JSON之类的东西。

于 2012-05-24T22:38:44.533 回答