在python中按浮点数拆分字符串,如果未找到浮点数,则按数字拆分字符串

2024-09-30 01:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串列表,我想在一个浮点数上拆分每个字符串。如果字符串中没有浮点数,我想将其拆分为一个数字。 它应该只拆分一次,并返回之前和之后的所有内容,以逗号分隔

输入字符串:

['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',
 '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, purified',
 'Silica, colloidal anhydrous',  '2.62',  'Glidant  Ph Eur',
 'Magnesium stearate',  '1.38',  'Lubricant  Ph Eur']

Tags: 字符串eurbinderphactive浮点数ingredientwater
1条回答
网友
1楼 · 发布于 2024-09-30 01:22:29

试试这个re.split选项:

inp = 'Croscarmellose sodium  22.0 mg Disintegrant  Ph Eur'
parts = re.split(r'\s+(\d+(?:\.\d+)?)\s+', inp, 1)
print(parts)

这张照片是:

['Croscarmellose sodium', '22.0', 'mg Disintegrant  Ph Eur']

我们的想法是在这个正则表达式模式上拆分:

\s+(\d+(?:\.\d+)?)\s+

它匹配一个数字,带有可选的十进制成分,并由空格包围。请注意,我们在数字周围加了括号,因为我们不想在拆分中使用它。还要注意re.split的第三个参数设置为1,这告诉Python只拆分一次

相关问题 更多 >

    热门问题