Что лучше?
Не могу определиться
Я бы первым способом: сразу видно и то чем может быть и чем может стать (не считая "short_description").
Если всё же использовать split, можно вызвать с аргументом чтобы останавливался после первого найденного совпадения а не делил по всему тексту: .split("_", maxsplit=1)[0]
либо использовать partition: .partition("_")[0]