gpt4 book ai didi

python - 从Python中的字符串列表中获取小数/整数之前的所有值

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:09 24 4
gpt4 key购买 nike

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

输入字符串:

['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'

即代码不会进入 else 部分。一个观察是我的正则表达式的 split 函数正在创建一个列表列表,即 regex_float_part 和 regex_integer_part 是列表列表。谁能帮我解决我的代码没有响应的字符串的问题

最佳答案

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

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

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

关于python - 从Python中的字符串列表中获取小数/整数之前的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com