如何从字符串转换为ASCII值

时间:2018-11-19 16:08:00

标签: python tuples ascii

是否可以从字符串列表中转换一个ASCII字符字符串:

[['You '], ['have '], ['made '], ['my '], ['day.']]

我了解到,转换是使用ord(i)完成的,如here所述。看起来像这样的转换之后,我似乎似乎无法弄清楚如何保留列表结构的列表:

[[ 1, 2, 3 ], [ 1, 2, 3, 4 ], etc. ]

谢谢!

2 个答案:

答案 0 :(得分:3)

使用列表理解或映射遍历内部元素并应用ord函数:

示例:

# python 3 (py2 syntax slightly different)
x = [['You '], ['have '], ['made '], ['my '], ['day.']]
[list(map(ord, i[0])) for i in x]
# outputs
Out[41]:
[[89, 111, 117, 32],
 [104, 97, 118, 101, 32],
 [109, 97, 100, 101, 32],
 [109, 121, 32],
 [100, 97, 121, 46]]

答案 1 :(得分:1)

您有两个选择:

  • 嵌套您的列表理解:

    [[ord(c) for c in nested[0]] for nested in outerlist]
    
  • 在Python 3中,您可以将字符串编码为bytes对象,然后将其转换为列表。毕竟,bytes对象只是整数序列:

    [list(nested[0].encode('ascii')) for nested in outerlist]
    

    Python 2等效项是使用bytearray() type;对于str(字节字符串):

    [list(bytearray(nested[0])) for nested in outerlist]
    

在这两种情况下,我都假定您的嵌套列表每个仅包含一个元素,一个字符串。

Python 3.7上的演示:

>>> l = [['You '], ['have '], ['made '], ['my '], ['day.']]
>>> [[ord(c) for c in nested[0]] for nested in l]
[[89, 111, 117, 32], [104, 97, 118, 101, 32], [109, 97, 100, 101, 32], [109, 121, 32], [100, 97, 121, 46]]
>>> [list(nested[0].encode('ascii')) for nested in l]
[[89, 111, 117, 32], [104, 97, 118, 101, 32], [109, 97, 100, 101, 32], [109, 121, 32], [100, 97, 121, 46]]