Python:将列表中的字符串值转换为 ASCII 值

3 投票
2 回答
8404 浏览
提问于 2025-04-21 01:37

我正在尝试把字符串中的每个字符转换成它们各自的ascii值。可是我似乎无法让每个字符都变成对应的ascii值。

举个例子,如果变量words的值是["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 个回答

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]
3

把单词当作一个长长的字符串来处理,比如可以用嵌套的列表推导式:

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))

如果你想把它们当作单独的单词来处理,那你需要修改你的列表推导式:

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

撰写回答