Jak przekonwertować listę wartości ascii na ciąg znaków w Pythonie?

Mam listę w programie Pythona, która zawiera szereg liczb, które same są wartościami ASCII. Jak przekonwertować to na" zwykły " ciąg znaków, który mogę echo do ekranu?

Author: Electrons_Ahoy, 2008-10-08

6 answers

Prawdopodobnie szukasz 'chr ()':

>>> L = [104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100]
>>> ''.join(chr(i) for i in L)
'hello, world'
 98
Author: Thomas Wouters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 21:54:33

To samo podstawowe rozwiązanie co inne, ale osobiście wolę używać mapy zamiast listy:


>>> L = [104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100]
>>> ''.join(map(chr,L))
'hello, world'
 18
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-08 01:22:05
import array
def f7(list):
    return array.array('B', list).tostring()

From Python Patterns-Anegdota Optymalizacyjna

 12
Author: Toni Ruža,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-08 20:22:31
l = [83, 84, 65, 67, 75]

s = "".join([chr(c) for c in l])

print s
 6
Author: Thomas Vander Stichele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 21:55:06

Może nie jako rozwiązanie Pyhtoniczne, ale łatwiejsze do odczytania dla noobów takich jak ja:

charlist = [34, 38, 49, 67, 89, 45, 103, 105, 119, 125]
mystring = ""
for char in charlist:
    mystring = mystring + chr(char)
print mystring
 4
Author: David White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-13 00:35:37

Def working_ascii(): """ G R e e T i n g s ! 71, 114, 101, 101, 116, 105, 110, 103, 115, 33 """

hello = [71, 114, 101, 101, 116, 105, 110, 103, 115, 33]
pmsg = ''.join(chr(i) for i in hello)
print(pmsg)

for i in range(33, 256):
    print(" ascii: {0} char: {1}".format(i, chr(i)))

Working_ascii ()

 2
Author: ptsivakumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 03:42:20