2016-11-17 3 views
-1

Ich habe versucht, den Statusnamen aus der Zeichenfolge 'Rhode Island[edit]' zu extrahieren.Warum teilen und strip gibt unterschiedliche Ausgabe in Python?

Als ich versuchte .split('[[]').str[0], wurde mir das korrekte Ergebnis 'Rhode Island' gegeben. Als ich jedoch versuchte .rstrip('[edit]'), wurde mir das falsche Ergebnis 'Rhode Islan' gegeben.

Ich habe verwirrt, warum das Zeichen "d" vor der linken Klammer wurde auch entfernt, wenn ich rstrip-Funktion verwendet.

+2

der Parameter zu 'rstrip()' ist „* eine Zeichenfolge, die den Satz von Zeichen spezifiziert entfernt werden . * ". Lesen Sie die Dokumentation: https://docs.python.org/3/library/stdtypes.html?highlight=rstrip#str.rstrip – cdarke

+0

''Rhode Island [Bearbeiten]'. Split ('[[]'). Str [ 0] 'wird" AttributeError "erzeugen; Bitte überprüfen Sie diesen Teil Ihrer Frage. –

Antwort

1

S.rstrip([chars]) -> string oder Unicode

Return eine Kopie des Strings S mit nachfolgenden Leerzeichen entfernt. Wenn Zeichen vorhanden sind und nicht None, entfernen Sie stattdessen Zeichen in Zeichen. Wenn Zeichen Unicode ist, wird S, bevor Sie die Zeichen =

in Ihrem Fall Strippen in Unicode konvertiert [ '[', 'e', ​​'d', 'i', 't', ']'] welche enthält ‚d‘ es Vordernachlauf Zeichenfolge, die d[edit] gegeben durch Zeichen gebildet

versuchen regulären Ausdruck ist

import re 
re.compile(r'\[edit\]$').sub('','Rhode Island[edit]') 
+0

Die Verwendung von 're' ist der beste Ansatz, da er die Absicht offenbart. –

3

rstrip nicht tun, was Sie wollen, entfernt es alle Zeichen vom Ende der Zeichenfolge angegeben, so entfernt es '[', 'e', ​​'d', 'i', 't' und ' ] '. Was Sie wollen, ist aufgeteilt auf '[' dann das erste Element: 'Rhode Island[edit]'.split('[')[0]

Verwandte Themen