gpt4 book ai didi

Python正则表达式——提取浮点型

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:42 29 4
gpt4 key购买 nike

我正在尝试从字符串中提取特定的“ float ”,它包含多种格式化的“整数”、“ float ”和日期。所讨论的特定“ float ”由一些标准化文本主持。

字符串示例

my_string = """03/14/2019 07:07 AM
💵Soles in mDm : 2864.35⬇
🔶BTC purchase in mdm: 11,202,782.0⬇
"""

我已经能够从 my_string 中为 2864.35 提取所需的浮点模式,但是如果这个特定的浮点模式发生变化或者出现另一个具有相同格式的浮点,我的脚本不会返回所需的结果

regex = r"(\d+\.\d+)"
matches = re.findall(regex, my_string)
for match in matches:
print(match)
  • 它可能会因为数字格式不一致而截断所需的 float
  • 它可能会打印两个 float ,因为不需要的 float 的数字模式太相似而无法被当前的正则表达式过滤掉 regex

期望从正则表达式 regex

返回
  • 使用灵活的整数部分 float ,有时会省略逗号,即。 45000.50 其他时间 45,000.50
  • 唯一的行标识符:Soles 可以是大写/小写
  • 行标识符:浮点前缀:
  • 它应该只返回一个 float

仅在字符串的第二行中所需的 float 有一些变化

您在下面看到的是同一行的三个示例,my_string 中的第二行。正则表达式应该能够只返回第二行,尽管有任何变化,例如 solesSoles

  • 💵米底:2864.35⬇
  • 鞋底 MDM:2,864.35
  • mdm 鞋底:2,864.355

非常感谢在编辑或重写当前正则表达式 regex 方面的任何帮助

最佳答案

编辑 - 嗯...如果它必须遵循 soles 然后希望这有助于

尝试这些,当然我的控制台不能接受额外的字符,但基于您的输入:

>>> my_string = """03/14/2019 07:07 AM
Soles in mDm : 2864.35
BTC purchase in mdm: 11,202,782.0
Soles in mDm : 2864.35
soles MDM: 2,864.35
Soles in mdm :2,864.355
"""


>>> re.findall('(?i)soles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']



>>> re.findall('[S|s]oles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']

关于Python正则表达式——提取浮点型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55192322/

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