Срез строки Python

1

Как я могу нарезать строку, сравниваемую с моим списком.

string = "how to dye my brunet hair to blonde? "
list = ['how', 'how to',...]

Я хочу, чтобы код удалял "как" и печатал остальные.

 dye my brunet hair to blonde?

Любая идея?

  • 0
    Кстати, это хорошая привычка избегать называть ваши переменные такими же именами, как у важных встроенных функций, если вы действительно не хотите такого поведения (иногда вы этого хотите!). То есть вы, вероятно, не хотите называть свои списки списком.
Теги:
string
slice

4 ответа

3
Лучший ответ

Это должно убедиться, что замена выполняется только в начале. Однако не очень эффективно. Это может помочь, если будет ясно, что вы хотели сделать.

string = "how to dye my brunet hair to blonde? "
list = ['how', 'how to',"bananas"]
list.sort(key=len,reverse=True)  # sort by decreasing length

for sample in string, "bananas taste swell", "how do you do?":
  for beginning in list:
    if sample.startswith(beginning):
      print sample[len(beginning):]
      break
  else:   # None of the beginnings matched
    print sample
  • 1
    +1 для выполнения обратной сортировки для обработки зависимости порядка
  • 0
    спасибо, на самом деле это то, что я хотел.
Показать ещё 1 комментарий
6
In [1]: s = "how to dye my brunet hair to blonde? "

In [2]: print s.replace("how to", "")
 dye my brunet hair to blonde? 

При использовании этого способа replace заменит все вхождения его первого аргумента вторым аргументом. Он также принимает необязательный третий аргумент, который ограничивает количество произведенных замен. Это полезно, если, например, вы хотите заменить первое вхождение "как".

  • 2
    "Как понять, как заменить лампочку?"
2
>>> string[len('how to'):]
' dye my brunet hair to blonde? '
1

Поскольку другие ответы не учитывают список:

input = "how to be the best python programmer of all time"
#note that the longer ones come first so that "how" doesn't get cut and then "how to" never exists
stopwords = ['how to', 'how']
for word in stopwords:
    input = input.replace(word, '', 1)

print input
  • 2
    отлично! Я хотел бы проголосовать за тебя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню