Python: есть ли оператор Walrus для срезов объекта?
Мой вопрос в том, что во всех примерах моржа они используют весь объект для логического значения, например
if (x := len(s)) > 5:
print(x)
обращает
x = len(s)
if x > 5:
print(x)
Есть ли способ сделать это для фрагментов x, если x был строкой? например x[-1] != ','
Вот код, который я хочу преобразовать в оператора моржа
title = book.find(class_='title').get_text()
if title[-1:] == '\n':
title = title[:-1]
1 ответ
Решение
Если это пример, чтобы проиллюстрировать общий вопрос, я не могу придумать, как включить оператора моржа в эту ситуацию. Однако в этом конкретном случае вы можете объединить его с помощью:
title = book.find(class_='title').get_text().rstrip('\n')
который удаляет все символы новой строки в конце, только если они существуют.
Конечно, это не сработает с более сложной нарезкой, но в этом случае сохранение определения переменной в другой строке может быть более читаемым.