gpt4 book ai didi

python - 将所有 Unicode 字符视为单个字母

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:15 26 4
gpt4 key购买 nike

我想创建一个程序来计算单词的“值”,方法是根据字母在单词中的第一个位置添加赋予字母的值(作为练习,我是 Python 新手)。
IE。 "foo" 会返回 5(因为 'f' = 1,'o' = 2)而 "bar" 会返回 6(因为 'b' = 1,' a' = 2, 'r' = 3).

到目前为止,这是我的代码:

# -*- coding: utf-8 -*-
def ppn(word):
word = list(word)
cipher = dict()
i = 1
e = 0

for letter in word:
if letter not in cipher:
cipher[letter] = i
e += i
i += 1
else:
e += cipher[letter]
return ''.join(word) + ": " + str(e)


if __name__ == "__main__":
print ppn(str(raw_input()))

它运行良好,但是对于包含“ł”、“±”等字符的单词,它不会返回正确的值(我猜这是因为它首先将这些字母转换为 Unicode 代码)。有没有办法绕过它并让解释器将所有字母视为单个字母?

最佳答案

将输入解码为 un​​icode,然后在所有地方使用 unicode,然后在输出时解码。

具体来说你需要改变

print ppn(str(raw_input()))

print ppn(raw_input().decode(sys.stdin.encoding))

这将解码您的输入。然后你还需要改变

''.join(word) + ": " + str(e)

u''.join(word) + u': ' + unicode(e)

这将使您的所有代码在内部使用 unicode 对象。

Print 会将 unicode 正确编码为您的终端使用的任何编码,但您也可以根据需要指定它。

或者你可以完全按照你已经做的,但是用 python 3 运行它。

更多信息,请阅读这篇非常有用的文章talk on the subject

关于python - 将所有 Unicode 字符视为单个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340874/

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