483 Stimmen

Eine Liste von Zeichen in eine Zeichenkette umwandeln

Wenn ich eine Liste von Zeichen habe:

a = ['a','b','c','d']

Wie konvertiere ich sie in eine einzige Zeichenfolge?

a = 'abcd'

688voto

Daniel Stutzbach Punkte 69710

Verwenden Sie die join Methode der leeren Zeichenkette, um alle Zeichenketten mit der leeren Zeichenkette dazwischen zu verbinden, etwa so:

>>> a = ['a', 'b', 'c', 'd']
>>> ''.join(a)
'abcd'

48voto

Paulo Scardine Punkte 67246

Das funktioniert in vielen gängigen Sprachen wie JavaScript und Ruby, warum nicht auch in Python?

>>> ['a', 'b', 'c'].join('')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'join'

Seltsamerweise ist in Python die join Methode ist auf der str Klasse:

# this is the Python way
"".join(['a','b','c','d'])

Pourquoi join ist keine Methode in der list Objekt wie in JavaScript oder anderen gängigen Skriptsprachen? Das ist ein Beispiel dafür, wie die Python-Gemeinschaft denkt. Da join eine Zeichenkette zurückliefert, sollte es in der String-Klasse und nicht in der List-Klasse platziert werden, so dass die str.join(list) Methode bedeutet: Zusammenfügen der Liste zu einer neuen Zeichenkette mit str als Trennzeichen (in diesem Fall str ist eine leere Zeichenkette).

Irgendwie habe ich diese Art zu denken nach einer Weile lieben gelernt. Ich kann mich über eine Menge Dinge im Python-Design beschweren, aber nicht über seine Kohärenz.

19voto

Kyle Punkte 312

Wenn Ihr Python-Interpreter alt ist (z.B. 1.5.2, was bei einigen älteren Linux-Distributionen üblich ist), haben Sie möglicherweise keine join() als Methode für ein beliebiges altes String-Objekt zur Verfügung, und Sie müssen stattdessen das String-Modul verwenden. Beispiel:

a = ['a', 'b', 'c', 'd']

try:
    b = ''.join(a)

except AttributeError:
    import string
    b = string.join(a, '')

Die Zeichenfolge b wird 'abcd' .

10voto

bigeagle Punkte 134

Dies könnte der schnellste Weg sein:

>> from array import array
>> a = ['a','b','c','d']
>> array('B', map(ord,a)).tostring()
'abcd'

4voto

cce Punkte 49

Die Funktion "Reduzieren" funktioniert auch

import operator
h=['a','b','c','d']
reduce(operator.add, h)
'abcd'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X