Получить содержимое строки перед символом «+» в python

ВХОД:

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, чтобы все элементы после + не появлялись.

Что именно вы пробовали? Что не работает? Я пытался решить это сам, и это выполнимо;)

L_Church 25.02.2019 16:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Сделайте разделение на ,, а затем на + и выберите элемент по индексу 0

', '.join([i.split("+")[0].strip() for i in s.split(",")])

Вывод

'Coated tablet, Film-coated tablet, Modified-release tablet, Prolonged-release tablet'

то же решение, что и у меня, за исключением того, что мой код выглядит ужасно! :)

L_Church 25.02.2019 17:01

Используя регулярное выражение:

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)

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