ВХОД:
s = 'Coated tablet + ALFUZOSIN HYDROCHLORIDE, Film-coated tablet + ALFUZOSIN HYDROCHLORIDE, Modified-release tablet + ALFUZOSIN HYDROCHLORIDE, Prolonged-release tablet + ALFUZOSIN HYDROCHLORIDE'
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
s = 'Coated tablet, Film-coated tablet, Modified-release tablet, Prolonged-release tablet'
Как для каждой такой строки получить необходимый вывод в Python, чтобы все элементы после + не появлялись.






Сделайте разделение на ,, а затем на + и выберите элемент по индексу 0
', '.join([i.split("+")[0].strip() for i in s.split(",")])
Вывод
'Coated tablet, Film-coated tablet, Modified-release tablet, Prolonged-release tablet'
то же решение, что и у меня, за исключением того, что мой код выглядит ужасно! :)
Используя регулярное выражение:
import re
old_s = 'Coated tablet + ALFUZOSIN HYDROCHLORIDE, Film-coated tablet + ALFUZOSIN HYDROCHLORIDE, Modified-release tablet + ALFUZOSIN HYDROCHLORIDE, Prolonged-release tablet + ALFUZOSIN HYDROCHLORIDE'
new_s = re.sub(r'\s\+.*?, | \+.*?$', ',', s)[:-1]
print(new_s)
>>> 'Coated tablet, Film-coated tablet, Modified-release tablet, Prolonged-release tablet'
Слева от вертикальной черты \s указывает на пробел, \+.*?, ищет все, что находится между + и ,, с правой стороны вы переходите к последнему регистру, где нет запятой, используя вместо этого $.
[:-1] потому что все совпадения заменяются запятой, однако вам не нужна запятая в конце вашей строки.
Используя регулярные выражения,
Он удаляется из +, пока не закончатся символы, не являющиеся запятыми.
import re
s = 'Coated tablet + ALFUZOSIN HYDROCHLORIDE, Film-coated tablet + ALFUZOSIN HYDROCHLORIDE, Modified-release tablet + ALFUZOSIN HYDROCHLORIDE, Prolonged-release tablet + ALFUZOSIN HYDROCHLORIDE'
re.sub(" [+] [^,]+","",s)
Что именно вы пробовали? Что не работает? Я пытался решить это сам, и это выполнимо;)