2010-12-05 2 views
3

У меня есть эти 3 строк:Python удалить в строке

ЖЕЛТЫЕ, МАЛЫЙ, STRETCH, ВЗРОСЛЫЙ, T21fdsfdsfs
ЖЕЛТЫЕ, МАЛЫЙ, STRETCH, ВЗРОСЛЫЙ, Tdsfs
ЖЕЛТЫЕ, МАЛЫЙ, STRETCH, ВЗРОСЛЫЙ, TD

Я хотел бы удалить все после последнего , включая запятую. Поэтому я хочу удалить эти части ,T21fdsfdsfs, ,Tdsfs и TD. Как я могу это сделать в Python?

ответ

6

Вы не можете. Создайте новую строку с фрагментами, которые вы хотите сохранить.

','.join(s.split(',')[:4]) 
+6

Вы также можете использовать -1 вместо 4, если вы просто хотите, чтобы удалить последнюю часть и не знаю, сколько частей будет. – istruble 2010-12-05 05:37:41

+0

-1 потому что у Кристиана действительно есть правильная идея ИМО. Я делал эквивалент в своем собственном коде много раз. – 2010-12-05 07:11:22

+0

@ Karl Knechtel: Я думаю, что Игнасио предположил, что нужны только первые 4 поля (а остальное - мусор), но только [hssss] (http://stackoverflow.com/users/530988/hssss) может действительно очистить вещи вверх. – 2010-12-05 09:52:41

5
s.rsplit(',', 1)[0] 

Во всяком случае, я предлагаю иметь взгляд на Ignacio Vazquez-Abrams's answer тоже, это может сделать больше смысла для вашей проблемы.

3

По The Zen of Python:

Там должно быть одно-- и предпочтительно только один --obvious способ сделать это.

... так вот третий, который использует rpartition:

>>> for item in catalogue: 
...  print item.rpartition(',')[0] 
... 
YELLOW,SMALL,STRETCH,ADULT 
YELLOW,SMALL,STRETCH,ADULT 
YELLOW,SMALL,STRETCH,ADULT 

я не сравнил его работы по сравнению с двумя предыдущими ответами.

0

Если вы обратитесь к string элементов, вы можете использовать str.rsplit(), чтобы отделить каждую строку, устанавливая maxsplit 1.

str.rsplit([sep[, maxsplit]])

Возвращает список слов в строке, используя разделитель в качестве строка разделителя. Если задано maxsplit, выполняется максимум maxsplit, самые правые. Если sep не указан или None, любая строка пробелов является разделителем. За исключением разделения справа, rsplit() ведет себя подобно split(), который подробно описан ниже.

>>> lst = "YELLOW,SMALL,STRETCH,ADULT,T" 
>>> lst.rsplit(',',1)[0] 
'YELLOW,SMALL,STRETCH,ADULT' 
>>> 
Смежные вопросы