String in eine Liste von Zeichen in Python aufteilen [duplicate]

Lesezeit: 3 Minuten

String in eine Liste von Zeichen in Python aufteilen duplicate
FlexedCookie

Im Wesentlichen möchte ich eine Textzeile aus einer Datei saugen, die Zeichen einer Liste zuweisen und eine Liste aller einzelnen Zeichen in einer Liste erstellen – eine Liste von Listen.

Im Moment habe ich das probiert:

fO = open(filename, 'rU')
fL = fO.readlines()

Das ist alles, was ich habe. Ich weiß nicht so recht, wie ich die einzelnen Zeichen extrahieren und einer neuen Liste zuordnen soll.

Die Zeile, die ich aus der Datei bekomme, sieht ungefähr so ​​​​aus:

fL = 'FHFF HHXH XXXX HFHX'

Ich möchte es in diese Liste umwandeln, mit jedem einzelnen Zeichen für sich:

['F', 'H', 'F', 'F', 'H', ...]

String in eine Liste von Zeichen in Python aufteilen duplicate
Elliot Bonneville

Sie können dies tun mit aufführen:

new_list = list(fL)

Beachten Sie, dass alle Leerzeichen in der Zeile nach meinem besten Wissen in diese Liste aufgenommen werden.

  • mit utf-8 zeichen funktioniert es nicht wie erwartet. Für den String “zyć” habe ich eine Liste mit 3 Zeichen erwartet, stattdessen habe ich diese Liste erhalten: [‘z’, ‘y’, ‘xc4’, ‘x87’]. Könnten Sie bitte eine Anleitung geben, was getan werden kann, um dieses Problem zu lösen. Danke

    – Ali Shah Ahmed

    11. Juni ’15 um 7:55

  • Ich habe meine Antwort, ich habe vergessen, ‘u’ vor meiner Zeichenfolge hinzuzufügen, daher wurde sie nicht als Unicode behandelt. Danke.

    – Ali Shah Ahmed

    11. Juni ’15 um 8:04

Ich bin anscheinend etwas spät dran, aber…

a="hello"
print list(a)
# ['h','e','l','l', 'o']

String in eine Liste von Zeichen in Python aufteilen duplicate
koblas

Strings sind iterierbar (genau wie eine Liste).

Ich interpretiere, dass Sie wirklich etwas wollen wie:

fd = open(filename,'rU')
chars = []
for line in fd:
   for c in line:
       chars.append(c)

oder

fd = open(filename, 'rU')
chars = []
for line in fd:
    chars.extend(line)

oder

chars = []
with open(filename, 'rU') as fd:
    map(chars.extend, fd)

chars würde alle Zeichen in der Datei enthalten.

  • @FlexedCookie itertools.chain ist wirklich das einfachste dafür — chars = list(itertools.chain.from_iterable(open(filename, 'rU))).

    – agf

    23. März ’12 um 3:00

  • Der obige Code berücksichtigt die Leerzeichen nicht, d. " "

    Benutzer2489252

    25. Juli ’13 bei 4:34

1641701808 296 String in eine Liste von Zeichen in Python aufteilen duplicate
cs95

Python >= 3.5

Ab Version 3.5 ist die Verwendung von PEP 448 – Erweiterte Verallgemeinerungen beim Entpacken:

>>> string = 'hello'
>>> [*string]
['h', 'e', 'l', 'l', 'o']

Dies ist eine Spezifikation der Sprachsyntax, ist also schneller als der Aufruf list:

>>> from timeit import timeit
>>> timeit("list('hello')")
0.3042821969866054
>>> timeit("[*'hello']")
0.1582647830073256

1641701808 351 String in eine Liste von Zeichen in Python aufteilen duplicate
Tim

Also um die Zeichenfolge hinzuzufügen hello zu einer Liste als einzelne Zeichen, versuchen Sie Folgendes:

newlist = []
newlist[:0] = 'hello'
print (newlist)

  ['h','e','l','l','o']

Dies geht jedoch einfacher:

splitlist = list(newlist)
print (splitlist)

  • Aber noch einfacher ist: newlist = list('hello')

    – tim

    16. Juni ’14 um 9:48

  • @tim Ja, habe gerade gemerkt, dass ich das nicht eingefügt habe 🙂

    – Tim

    16. Juni ’14 um 14:33

1641701808 399 String in eine Liste von Zeichen in Python aufteilen duplicate
John La Rooy

fO = open(filename, 'rU')
lst = list(fO.read())

  • Aber noch einfacher ist: newlist = list('hello')

    – tim

    16. Juni ’14 um 9:48

  • @tim Ja, habe gerade gemerkt, dass ich das nicht eingefügt habe 🙂

    – Tim

    16. Juni ’14 um 14:33

Oder verwenden Sie ein ausgefallenes Listenverständnis, das “rechentechnisch effizienter” sein soll, wenn Sie mit sehr, sehr großen Dateien/Listen arbeiten

fd = open(filename,'r')
chars = [c for line in fd for c in line if c is not " "]
fd.close()

Übrigens: Die akzeptierte Antwort berücksichtigt nicht die Leerzeichen…

.

200080cookie-checkString in eine Liste von Zeichen in Python aufteilen [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy