Python chr() 函数输出不正确

标签 python chr

我在使用 chr() 函数时遇到问题。我的代码首先获取用户输入,将其放入数组中,然后使用 ord 函数将其转换为相应的数值,并对关键字执行相同的操作。然后,它使用 zip 函数将两个数组添加在一起以获取数字,并使用 chr 函数将其恢复为文本。问题是chr函数输出不正确

例如

c的数值是99

h的数值是104

它们相加得到 203

我的代码输出\xcb

当我制作一个单独的代码时

leb = chr(203)
print leb

将 203 输出为 Ë,这是一个单数字符,以及我解码它所需的内容

这是我的代码

num_string = raw_input("enter what you would like to encrypt")
num_list = []
for num in num_string:
    num_list.append(ord(num)) 
    print num_list

key_string = raw_input("enter the keyword")
key_list = []
for key in key_string:
   key_string = key_list.append(ord(key)) 
   print key_list

end_string = [x + y for x, y in zip(num_list, key_list)]
end_list = []
print end_string
for end in end_string:
    end_list.append(chr(end)) 
print end_list

运行时,这是输出

enter what you would like to encrypt cat

[99]

[99, 97]

[99, 97, 116]

enter the keywordhat

[104]

[104, 97]

[104, 97, 116]

[203, 194, 232]

['\xcb', '\xc2', '\xe8']

为什么我的代码会这样做以及如何解决这个问题?

最佳答案

一切都很正常。它只是字符串的值(带引号)和在系统代码页中转换后的字符串打印之间的区别。在 latin1 代码页中,字符 '\xcb'(代码 203)有效地打印为 Ë

但是打印列表与打印其值不同,让我们忘记使用 127 以上代码的字符,看看这个:

>>> l = [ 'a', 'b', 'c']
>>> print l
['a', 'b', 'c']
>>> print ','.join(l)
a,b,c

因此,在打印字符串列表时,Python 以其表示形式打印每个元素,并用引号括起来。因此,在您的示例中(假设您的系统编码 latin1),您可以编写:

...
print end_list
print ''.join(end_list)

你会得到预期的结果:

['\xcb', '\xc2', '\xe8']
ËÂè

关于Python chr() 函数输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873981/

相关文章:

VB.net 将 chr(255) 返回为 chr(63)

python - 使用 Pip 和 Homebrew 安装 Virtualenv 时出错

python - 在 for 循环中使用生成器 send()

python - 如何在 python 中使用 libSVM 计算精度、召回率和 F 分数

python - 在目录结构中向上移动

delphi - Delphi 2007 和 XE3 中的差分函数 Char/Chr

javascript - VBScript chr() 似乎返回错误值

python - 使用 scipy.signal 库中的 savgol_filter 平滑 Python 上的在线数据

python - 使用 ord 和 chr 移动字母

python - 为什么 `print ' 1\x0 8'` 结果 1 同时 `print ' 1\x08 2'` 结果 2?