首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Python中的字符串列表中获取十进制数/整数之前的所有值

从Python中的字符串列表中获取十进制数/整数之前的所有值
EN

Stack Overflow用户
提问于 2020-02-04 20:03:11
回答 2查看 46关注 0票数 1

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

输入字符串:

代码语言:javascript
运行
复制
['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']

预期输出:

代码语言:javascript
运行
复制
['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']

我的代码:

代码语言:javascript
运行
复制
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)

问题出在以下输入字符串上:

代码语言:javascript
运行
复制
'Water purified 49 Solvent  Ph Eur',

这不是预期的结果,这是:

代码语言:javascript
运行
复制
'Water purified', '49',  'Solvent  Ph Eur'

也就是说,代码不会进入else部分。一种观察结果是,我的正则表达式的拆分函数创建了一个列表列表,即regex_float_part和regex_integer_part是列表列表。有没有人能帮我解决我的代码没有响应的字符串

EN

Stack Overflow用户

发布于 2020-02-04 20:21:51

您的正则表达式几乎是正确的,但是您必须考虑到.和点后的数字可能不在那里。这可以像这样实现:

代码语言:javascript
运行
复制
\s+(\d+(?:\.\d+)?)\s+

不同之处在于,您可以将\.\d+添加到可能存在或不存在的非捕获组(?:xxxx)中,方法是在组后面使用问号:(?:xxxx)?

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60057011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档