gpt4 book ai didi

python - 在 Python 中从字符串中提取浮点值(可能使用正则表达式)

转载 作者:行者123 更新时间:2023-11-28 22:08:30 27 4
gpt4 key购买 nike

我在创建函数时遇到问题,该函数采用包含长度值的字符串(例如:'32.0 mm/1.259"`)并仅返回 mm 中的值。

我当前的函数 parse 只能处理只有 mm 值的字符串,但如果同时有 mm 则不能英寸值存在。

非常感谢任何帮助!

正则表达式模式: re.sub("[^0-9.\-]", "", str)

import re

def parse(str):
if not str:
return None
str = str.lower()
return float(re.sub("[^0-9.\-]", "", str))

tests = ['12.3 mm', '12.3mm', '32.0 mm / 1.259"', '32.0mm / 1.259"']
for s in tests:
print( parse(s) )

预期输出

12.3
12.3
32.0
32.0

实际输出

12.3
12.3
ValueError: could not convert string to float: '32.01.259'

最佳答案

您实际上可以告诉正则表达式捕获一个恰好在 mm 之前的浮点/整型值。整个单词:

re.search(r"([0-9]+(?:\.[0-9]+)?)\s*mm\b", text.lower())

参见 regex demo online .

这里,

  • ([0-9]+(?:\.[0-9]+)?) - 第 1 组:1+ 位后跟可选序列 .和 1+ 位数字
  • \s* - 0+ 个空格
  • mm\b - mm和单词边界。

参见 Python demo :

import re

def parse(text):
if not text:
return None
match = re.search(r"([0-9]+(?:\.[0-9]+)?)\s*mm\b", text.lower())
if match:
return float(match.group(1))
return text

tests = ['12.3 mm', '12.3mm', '32.0 mm / 1.259"', '32.0mm / 1.259"']
for s in tests:
print( parse(s) )

关于python - 在 Python 中从字符串中提取浮点值(可能使用正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416140/

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