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')

который удаляет все символы новой строки в конце, только если они существуют.

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

Другие вопросы по тегам