Warum gibt len ​​("" .split ("")) 1? Python

7

Was ist die pythonische Erklärung für len("".split(" ")) == 1 zeigt True?

Warum ergibt% "".split("") ['']

%Vor%     
alvas 09.09.2013, 15:00
quelle

4 Antworten

20

str.split(sep) gibt mindestens ein Element zurück. Wenn sep nicht im Text gefunden wurde, ist dieses eine Element der ursprüngliche, nicht geteilte Text.

Bei einer leeren Zeichenkette wird das Trennzeichen sep natürlich nie gefunden und wird in der Dokumentation ausdrücklich genannt:

  

Wenn Sie eine leere Zeichenfolge mit einem angegebenen Trennzeichen trennen, wird [''] zurückgegeben.

Sie sind wahrscheinlich verwirrt durch das Verhalten der Option None delimiter (der Standardwert):

  

Wenn sep nicht angegeben ist oder None , wird ein anderer Aufteilungsalgorithmus angewendet: Läufe von aufeinander folgenden Leerzeichen werden als einzelnes Trennzeichen betrachtet, und das Ergebnis enthält am Anfang keine leeren Zeichenfolgen oder enden, wenn die Zeichenfolge führende oder nachfolgende Leerzeichen enthält. Wenn Sie also eine leere Zeichenfolge oder eine Zeichenfolge bestehend aus nur Leerzeichen mit einem None Trennzeichen aufteilen, wird [] zurückgegeben.

(Betonung meiner). Das macht str.split(None) die Ausnahme , nicht die Regel.

    
Martijn Pieters 09.09.2013, 15:03
quelle
4

[] hat die Länge Null. Wenn eine Liste etwas enthält, irgendetwas, dann wird es eine haben Länge & gt; = 1. In diesem Fall enthält [''] ein Element: die leere Zeichenfolge. So gibt es einen.

    
Hrishi 09.09.2013 15:04
quelle
2

Dies könnte relevant sein:

Warum werden leere Strings in split () Ergebnissen zurückgegeben?

split () ist als Gegenstück zu join () und:

gedacht %Vor%     
fsw 09.09.2013 15:03
quelle
0

Es sagt Ihnen die Länge der Liste, die produziert wird, nicht die Länge der Zeichenfolge.

    
beroe 09.09.2013 15:04
quelle

Tags und Links