2016-11-17 9 views
-1

Я пытался извлечь имя штата из строки 'Rhode Island[edit]'.Почему split и strip дают разные результаты в python?

Когда я попробовал .split('[[]').str[0], мне был дан правильный результат «Род-Айленд». Однако, когда я пробовал .rstrip('[edit]'), мне был дан неправильный результат «Rhode Islan».

Я смутился, почему символ 'd' перед левой скобкой также был удален, когда я использовал функцию rstrip.

+2

параметр для 'rstrip()' является «* строка, определяющая набор символов, которые будут удалена . *». Прочитайте документацию: https://docs.python.org/3/library/stdtypes.html?highlight=rstrip#str.rstrip – cdarke

+0

''Род-Айленд [редактировать]'. Split ('[[]'). Str [ 0] 'будет генерировать' AttributeError'; уточните пожалуйста, что часть вашего вопроса. –

ответ

1

S.rstrip([chars]) -> строка или юникода

Вернуть копию строки S с замыкающие пробелы удаляются. Если заданы символы, а не None, удалите символы вместо символов. Если символы Юникода, S будут преобразованы в юникод, прежде чем зачистки

в вашем случае символы = [ '[', 'е', 'D', 'I', 'T', ']'] которая содержит «d» там переднюю заднюю строку, которая формируется по заданным символам является d[edit]

попробовать регулярное выражение

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

Использование 're' - лучший подход, поскольку он показывает намерение. –

3

rstrip не делает то, что вы хотите, он удаляет все символы, указанные в конце строки, поэтому он удаляет '[', 'e', ​​'d', 'i', 't' и ' ]». То, что вы хотите, чтобы разделить на «[», то взять первый элемент: 'Rhode Island[edit]'.split('[')[0]