У меня есть список строк, и я хочу разбить каждую строку на число с плавающей запятой. Если в строке нет числа с плавающей запятой, я хочу разделить его на число. Он должен делиться только один раз и возвращать все до и после, разделенные запятыми.
Входная строка:
['Naproxen 500 Active ingredient Ph Eur',
'Croscarmellose sodium 22.0 mg Disintegrant Ph Eur',
'Povidone K90 11.0 Binder 56 Ph Eur',
'Water, purifieda,
'Silica, colloidal anhydrous 2.62 Glidant Ph Eur',
'Water purified 49 Solvent Ph Eur',
'Magnesium stearate 1.38 Lubricant Ph Eur']
Ожидаемый результат:
['Naproxen', '500', 'Active ingredient Ph Eur',
'Croscarmellose sodium', '22.0 mg', 'Disintegrant Ph Eur',
'Povidone K90', '11.0', 'Binder Ph Eur',
'Water, purifieda',
'Silica, colloidal anhydrous', '2.62', 'Glidant Ph Eur',
'Water purified', '49', 'Solvent Ph Eur',
'Magnesium stearate', '1.38', 'Lubricant Ph Eur']
Мой код:
for i in newresult:
regex_float_part = re.split(r'\s+(\d+\.\d+)\s+', i, 1)
# print(regex_float_part)
# regex_float_part_n = [item for sublist in regex_float_part for item in sublist]
if regex_float_part:
all_extract.append(regex_float_part)
else:
# regex_integer = r'\s+(\d+(?:\\d+)?)\s+'
regex_integer_part = re.split(r'\s+(\d+(?:\\d+)?)\s+', i, 1)
# regex_integer_part_n = [item for sublist in regex_integer_part for item in sublist]
all_extract.append(regex_integer_part)
Проблема с этой входной строкой:
'Water purified 49 Solvent Ph Eur',
Это не так, как ожидалось:
'Water purified', '49', 'Solvent Ph Eur'
, то есть код не собирается в остальную часть. Одно наблюдение состоит в том, что функция разбиения моего регулярного выражения создает список списков, то есть regex_float_part и regex_integer_part являются списком списков. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему для строки, на которую мой код не отвечает