Получить содержимое строки перед символом «+» в python - PullRequest
0 голосов
/ 25 февраля 2019

INPUT:

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, чтобы все элементы после + не делали 'Приходи.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

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

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], потому что все совпадения заменяются запятой, однако вам не нужна запятая вконец вашей строки.

0 голосов
/ 25 февраля 2019

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

Удаляет из + до тех пор, пока не закончатся символы, которые не являются запятыми

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)
0 голосов
/ 25 февраля 2019

Делить на ,, а затем на + и извлекать элемент по индексу 0

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

Вывод

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