是否可以从字符串列表中转换一个ASCII字符字符串:
[['You '], ['have '], ['made '], ['my '], ['day.']]
我了解到,转换是使用ord(i)
完成的,如here所述。看起来像这样的转换之后,我似乎似乎无法弄清楚如何保留列表结构的列表:
[[ 1, 2, 3 ], [ 1, 2, 3, 4 ], etc. ]
谢谢!
答案 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]]