Frage Konvertiere die Liste in einen String mit Python


Ich habe die Liste int, float und string enthalten:

lists = [10, "test", 10.5]

Wie kann ich die obige Liste in eine Zeichenfolge umwandeln? Ich habe versucht:

val = ','.join(lists)
print val

Ich bekomme Fehler wie folgt:

sequence item 0: expected string, int found

Wie kann ich dieses Problem lösen?


7
2017-11-10 12:11


Ursprung


Antworten:


Konvertieren Sie zuerst ganze Zahlen in Zeichenfolgen mit strverwenden map Funktion dann verwenden join Funktion-

>>> ','.join(map(str,[10,"test",10.5]) )#since added comma inside the single quote output will be comma(,) separated
>>> '10,test,10.5'

Oder wenn Sie jedes Element der Liste in einen String konvertieren möchten, versuchen Sie es

>>> map(str,[10,"test",10.5])
>>> ['10', 'test', '10.5']

Oder benutzen itertools für Speichereffizienz (große Daten)

>>>from itertools import imap
>>>[i for i in imap(str,[10,"test",10.5])]
>>>['10', 'test', '10.5']

10
2017-11-10 12:12



Der einfachste Weg ist, die ganze Sache zu senden str() oder repr():

>>> lists = [10, "test", 10.5]
>>> str(lists)
"[10, 'test', 10.5]"

repr() kann zu einem anderen Ergebnis führen str() abhängig davon, was für jeden Objekttyp in der list. Der Punkt von repr() ist, dass Sie solche Strings zurücksenden können eval() oder ast.literal_eval() um das ursprüngliche Objekt zurück zu bekommen:

>>> import ast
>>> lists = [10, "test", 10.5]
>>> ast.literal_eval(repr(lists))
[10, 'test', 10.5]

3
2017-11-10 12:53



Der Fehler, den Sie bekommen, weil join will Elemente sein string Tippe, aber in deiner Liste steht integer auch, also müssen Sie sie in den Typ string konvertieren.

Sie können Listenverständnis und str und Join verwenden, um sie zu verbinden

>>> lists = [10,"test",10.5]
>>> ",".join(str(x) for x in lists)

1
2017-11-10 12:18



Sie müssen jedes Element in Ihrer Liste als Zeichenfolge in das ',' eingeben. Überlegen Sie Folgendes:

val = ','. join ([str (Element) für Element in Listen])

Druckwert


1
2017-11-10 12:43



a = ['b','c','d']
strng = ''
for i in a:
   strng +=str(i)
print strng

1
2017-12-20 18:59



Wenn Sie jedes Element in der Liste in eine Zeichenfolge konvertieren möchten, können Sie dies einfach mit einer for-Schleife tun.

for i in range(len(lists)):
    lists[i] = str(lists[i])

Wenn Sie eine Zeichenfolge erstellen möchten, bei der alle Elemente zusammengefügt sind, können Sie den obigen Code leicht bearbeiten.

string_of_lists = ""
for i in lists:
    string_of_lists += str(i)

Wie Sie sehen können, ist dies eine andere Art, dies zu tun, abgesehen von den anderen Lösungen mit Join.

Ich hoffe, ich konnte helfen!


0
2017-11-10 12:21



Dies ist auch möglich. Hier x Variable ist Liste.

>>> '%s'*len(x) % tuple(x)

0
2017-09-05 05:19