Einen String in 2-Buchstaben-Segmente aufteilen [duplizieren]

8

Ich habe eine Saite, die ich in zwei Buchstaben teilen muss. Zum Beispiel sollte 'ABCDXY' zu ['AB', 'CD', 'XY'] werden. Das Verhalten im Falle einer ungeraden Anzahl von Zeichen kann völlig willkürlich sein (ich werde die Länge im Voraus prüfen).

Gibt es eine Möglichkeit, dies ohne eine hässliche Schleife zu tun?

    
max 19.09.2012, 09:04
quelle

6 Antworten

18
%Vor%     
Emmanuel 19.09.2012, 09:06
quelle
16

Reguläre Ausdrücke verwenden!

%Vor%

Ich weiß, dass es eine Weile her ist, aber ich kam zurück und war neugierig, welche Methode besser war; meins: r'.{1,2}' oder Jon's r'..?' . Auf der Oberfläche sieht Jon's viel schöner aus, und ich dachte, es wäre viel schneller als meiner, aber ich war überrascht, etwas anderes zu finden, also dachte ich, ich würde teilen:

%Vor%

Was zeigt, dass r'.{1,2}' tatsächlich die bessere / schnellere Wahl ist. (Aber nur leicht)

    
Inbar Rose 19.09.2012 09:11
quelle
2

Sie könnten versuchen:

%Vor%

UPDATE 2

Wenn Sie sich nicht um ungerade Zeichen kümmern, können Sie eine Regex (Vermeidung der Schleife) verwenden:

%Vor%     
pr0gg3d 19.09.2012 09:07
quelle
1

Es gibt nichts Hässliches an dem perfekten Pythonic:

%Vor%

Sie können auch Folgendes verwenden (von - Ссылка ):

%Vor%

(je nachdem, wie Sie es betrachten - kann oder darf nicht "Schleifen" verwenden;))

oder so ähnlich:

%Vor%     
Jon Clements 19.09.2012 09:07
quelle
0

Noch eine andere Lösung, die auf zip und einen Slice-Schritt aufgebaut ist:

%Vor%

Es verarbeitet Eingaben mit ungerader Länge.

    
Mu Mind 19.09.2012 09:31
quelle
0

Hier ist eine weitere Lösung ohne explizite Schleifen (obwohl @ Emmanuels Antwort für Ihre Frage am besten geeignet ist ):

%Vor%

Um Zeichenfolgen zu erhalten:

%Vor%

Bei Python 3 wrap mit list() , falls erforderlich.

    
jfs 19.09.2012 09:31
quelle

Tags und Links