Wie spalte ich einen String in Python um 2 oder 3, etc [duplicate]

Diese Frage hat hier schon eine Antwort:

  • Split String jeden n-ten Charakter? 15 antworten
  • Was ist der "pythonische" Weg, um über eine Liste in Brocken zu iterieren? 31 antworten

Weiß jemand, ob es in python möglich ist, einen String zu spalten, nicht unbedingt durch einen Raum oder Kommas, sondern nur durch jeden anderen Eintrag in der Zeichenfolge? Oder jeden 3. oder 4.

  • Lösen von Split-String in Python ohne die Verwendung von Split () -Funktion
  • Split-Funktion hinzufügen: \ xef \ xbb \ xbf ... \ n zu meiner Liste
  • Wie spalte ich einen String in Array von Zeichen mit Python?
  • Split große Dateien mit Python
  • Produktcode sieht aus wie abcd2343, was mit Buchstaben und Zahlen zu teilen
  • Pythonaufteilungsliste nach Stichwort
  • Zum Beispiel, wenn ich "12345678" als meine Saite hatte, gibt es einen Weg, um es in "12", "34", "56", 78 "?

  • Wie kann ich Generatoren / Iteratoren als falsch auswerten, wenn es erschöpft ist?
  • Wenn range () ein Generator in Python 3.3 ist, warum kann ich nicht als nächstes () auf einen Bereich aufrufen?
  • Gibt es eine Python-Bibliothek zur Handhabung komplizierter mathematischer Sets (konstruiert mit mathematischer Set-Builder-Notation)?
  • Python: gibt es einen XML-Parser als Generator implementiert?
  • Warum gibt es "Ausbeute" in einem Generator Ausdruck Ausbeute `Keine` s?
  • Erstellen einer scipy.lil_matrix mit einem Python-Generator effizient
  • 3 Solutions collect form web for “Wie spalte ich einen String in Python um 2 oder 3, etc [duplicate]”

    Sie können das Listenverständnis verwenden:

    >>> x = "123456789" >>> [x[i : i + 2] for i in range(0, len(x), 2)] ['12', '34', '56', '78', '9'] 

    Sie können ein Listenverständnis verwenden. Iterate über deine Saite und greife alle zwei Charaktere mit dem Slicing und die zusätzlichen Optionen in der range .

     s = "12345678" print([s[i:i+2] for i in range(0, len(s), 2)]) # >>> ['12', '34', '56', '78'] 

    Was Sie wollen, ist die itertools grouper() Rezept , die jede beliebige iterable und gibt Ihnen Gruppen von n Elemente aus diesem iterable:

     def grouper(iterable, n, fillvalue=None): "Collect data into fixed-length chunks or blocks" # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return zip_longest(*args, fillvalue=fillvalue) 

    (Beachten Sie, dass in 2.x ist dies etwas anders als zip_longest() heißt izip_longest() !)

    Z.B:

     >>> list(grouper("12345678", 2)) [('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')] 

    Sie können dann die Streicher mit einem einfachen Listenverständnis wieder verbinden :

     >>> ["".join(group) for group in grouper("12345678", 2)] ['12', '34', '56', '78'] 

    Wenn Sie vielleicht weniger als einen vollständigen Satz von Werten haben, verwenden Sie einfach fillvalue="" :

     >>> ["".join(group) for group in grouper("123456789", 2, fillvalue="")] ['12', '34', '56', '78', '9'] 
    Python ist die beste Programmiersprache der Welt.