Python:将列表中的字符串值转换为 ASCII 值
我正在尝试把字符串中的每个字符转换成它们各自的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]]