gpt4 book ai didi

python - 在 Python 中使用字典翻译短语

转载 作者:行者123 更新时间:2023-11-28 18:34:53 24 4
gpt4 key购买 nike

我正在做一个项目,目标是创建两个程序。一个程序读取用户的输入并将其翻译成 Leetspeak,而另一个程序将 Leetspeak 转换回英语。我决定尝试使用字典来处理翻译,而不是大量使用 If 语句或 replace("", "")。

转换为 Leetspeak 非常容易。我只是使用了字典和 for 循环。

但是,由于 Leetspeak 中的“字母”有时包含多个字符,我发现很难在不出现 KeyErrors 的情况下将其转换回去。

这是我目前所拥有的。

phrase = raw_input('Enter a phrase: ')
output = []

KEY = {
'4': 'A',
'8': 'B',
'(': 'C',
'|)': 'D',
'3': 'E',
'|=': 'F',
'6': 'G',
'|-|': 'H',
'!': 'I',
'_|': 'J',
'|<': 'K',
'1': 'L',
'|\/|': 'M',
'|\|': 'N',
'0': 'O',
'|D': 'P',
'(,)': 'Q',
'|?': 'R',
'5': 'S',
'7': 'T',
'|_|': 'U',
'\/': 'V',
'\/\/': 'W',
'><': 'X',
'`/': 'Y',
'2': 'Z',
' ': ' ',
}

for char in phrase:
if char in KEY:
# This line works perfectly, since it only requires a single
# character
print(KEY[char])
else:
while KEY[char] == False:
# If I'm not getting KeyErrors I'm getting errors with appending
# special characters or NoneType characters
output = output.append(char)
print(output)
# I tried clearing the output after every iteration so that it could be
# reused by the next char in phrase
output = []

# Understand that all of the prints() are for testing the program. I'm
# hoping to just have a single print() function at the end once everything
# has been translated.

如何转换所有这些 Leetspeak 字符?

至于为什么我选择不垃圾邮件 If 语句和 replace("", "")'s,我喜欢用新概念挑战自己。话虽如此,如有必要,我总是愿意完全以不同的方式来做到这一点。提前致谢。

最佳答案

转发很容易,正如您所指出的:

message = 'HALLOWEEN'
KEY_reversed = {v:k for k, v in KEY.items()}

>>> print(''.join(KEY_reversed[c] for c in message))
|-|4110\/\/33|\|

朝另一个方向前进有点困难,但您可以使用 replace() 做到这一点:

output = '|-|4110\\/\\/33|\\|'
for k, v in sorted(KEY.items(), key=lambda x: len(x[0]), reverse=True):
if k in output:
output = output.replace(k, v)

>>> output
'HALLOWEEN'

如果没有排序,V 和 W 等字符可能会出现歧义,而且它们可能会出现不一致的歧义,因为字典没有默认排序。

关于python - 在 Python 中使用字典翻译短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com