Как преобразовать значения ASCII из строки строк - PullRequest
0 голосов
/ 19 ноября 2018

Возможно ли преобразовать строку символов ASCII из списка строк:

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

Я понимаю, что преобразование выполняется с использованием ord(i), как объяснено здесь . Я просто не могу понять, как сохранить список структуры списка после преобразования, которое выглядит примерно так:

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

У вас есть два варианта:

  • Вложите ваше понимание списка:

    [[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() типа ;для 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]]
0 голосов
/ 19 ноября 2018

используйте понимание списка или карты, чтобы перейти во внутренние элементы и применить функцию 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...