Это делает трюк:
str_ = "{Red,Plant,Eel}{Blue,Animal,Maple}{Yellow,Plant,Crab}"
res = [x.split(',')[1] for x in str_[1:-1].split('}{')]
и производит
['Plant', 'Animal', 'Plant']
с str_[1:-1]
, мы удаляем начальные "{"
и завершающие "}"
, и мызатем разделяем оставшиеся объекты на каждый экземпляр "}{"
, получая таким образом:
["Red,Plant,Eel", "Blue,Animal,Maple", ...]
, наконец, для каждой строки мы разделяем на ","
, чтобы получить
[["Red", "Plant", "Eel"], ...]
, из которого мыоставляйте только первый элемент каждого подсписка с x[1]
.
Обратите внимание, что для вашей конкретной цели нарезка исходной строки с помощью str_[1:-1]
не обязательна (работает и без нее), но если вы хотите толькопервый вместо второго пункта это будет иметь значение.То же самое верно и в случае, если вы хотите третий.
Если вы хотите объединить строки выходных данных в соответствии с желаемым результатом, вы можете просто передать полученный список в .join
следующим образом:
out = ','.join(res)
, что дает вам
"Plant,Animal,Plant"