Python: как превратить строку в список данных Ascii? [Дубликат]

l = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]

Python 2:

print ', '.join('{:0.2f}'.format(i) for i in l)

Python 3:

print(', '.join('{:0.2f}'.format(i) for i in l))

Выход:

9.00, 0.05, 0.03, 0.01, 0.06, 0.08
36
задан JJFord3 14 December 2016 в 21:54
поделиться

7 ответов

Вы можете использовать понимание списка:

>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
65
ответ дан Mark Byers 15 August 2018 в 19:54
поделиться

Вот довольно краткий способ выполнения конкатенации:

>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'

И своего рода забавная альтернатива:

>>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'
14
ответ дан Andrew Clark 15 August 2018 в 19:54
поделиться
  • 1
    О чем я только думал? Это гораздо более пифонично, чем мое. Это то, что я получаю за попытку ответить на вопрос python сразу после прочтения кучки вопросов Haskell ... +1 – Nate 10 December 2011 в 01:45

Если вы используете python 3 или выше,

>>> list(bytes(b'test'))
[116, 101, 115, 116]
0
ответ дан devunt 15 August 2018 в 19:54
поделиться

ваше описание довольно запутанно; прямая конкатенация десятичных значений не кажется полезной в большинстве контекстов. следующий код будет прикладывать каждую букву к 8-битовому символу, а THEN - конкатенацию. так работает стандартная кодировка ASCII

def ASCII(s):
    x = 0
    for i in xrange(len(s)):
        x += ord(s[i])*2**(8 * (len(s) - i - 1))
    return x
1
ответ дан Jason Stein 15 August 2018 в 19:54
поделиться

Не совсем очевидно, почему нужно было бы объединить (десятичные) значения «ascii». Несомненно, что объединение их без ведущих нулей (или какого-либо другого дополнения или разделителя) бесполезно - ничто не может быть надежно восстановлено из такого выхода.

>>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
>>> ["".join("%d" % ord(c) for c in s) for s in tests]
['104105', '72105', '7273', '104105']

Обратите внимание, что первые 3 выхода разной длины. Обратите внимание, что четвертый результат совпадает с первым.

>>> ["".join("%03d" % ord(c) for c in s) for s in tests]
['104105', '072105', '072073', '010041000005']
>>> [" ".join("%d" % ord(c) for c in s) for s in tests]
['104 105', '72 105', '72 73', '10 41 0 5']
>>> ["".join("%02x" % ord(c) for c in s) for s in tests]
['6869', '4869', '4849', '0a290005']
>>>

Не замечайте таких проблем.

1
ответ дан John Machin 15 August 2018 в 19:54
поделиться

Если вы хотите, чтобы ваш результат был конкатенирован, как вы видите в своем вопросе, вы можете попробовать что-то вроде:

>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
5
ответ дан Nate 15 August 2018 в 19:54
поделиться
def stringToNumbers(ord(message)):
    return stringToNumbers
    stringToNumbers.append = (ord[0])
    stringToNumbers = ("morocco")
2
ответ дан Soner Gönül 15 August 2018 в 19:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: