Python:将列表中的字符串值更改为ascii值

时间:2014-09-11 09:11:34

标签: python string list append ascii

我试图将字符串中的字符转换为单独的ascii值。我似乎无法让每个角色都变成相对的ascii值。

例如,如果变量词具有值[" hello"," world"],则在运行完成的代码后,列表ascii将具有值:

[104,101,108,108,111,119,111,114,108,100]

到目前为止,我已经:

words = ["hello", "world"]
ascii = []
for x in words:
    ascii.append(ord(x))

打印这会返回一个错误,因为ord期望一个字符但是得到一个字符串。有谁知道如何解决这个问题,以返回每个字母的ascii值?三江源

2 个答案:

答案 0 :(得分:2)

将单词视为一个长字符串(例如,使用嵌套的list-comp):

ascii = [ord(ch) for word in words for ch in word]
# [104, 101, 108, 108, 111, 119, 111, 114, 108, 100]

相当于:

ascii = []
for word in words:
    for ch in word:
        ascii.append(ord(ch))

如果您想将它们作为单独的单词进行,那么您可以更改list-comp:

ascii = [[ord(ch) for ch in word] for word in words]
# [[104, 101, 108, 108, 111], [119, 111, 114, 108, 100]]

答案 1 :(得分:1)

您的循环遍历words列表,该列表是string的列表。现在,ord是一个函数,它将返回单字符字符串的整数序数。所以你需要迭代字符串的字符。

words = ["hello", "world"]
ascii = []
for word in words:
    ascii.extend(ord(ch) for ch in word)

print ascii会给你,

[104, 101, 108, 108, 111, 119, 111, 114, 108, 100]