为了账号安全,请及时绑定邮箱和手机立即绑定

Python正则表达式提取两个特殊字符之间的正数和负数

Python正则表达式提取两个特殊字符之间的正数和负数

梵蒂冈之花 2022-06-02 10:18:00
需要从字符串中提取值,该值可以包含逗号,小数点,逗号和小数点都可以,不带逗号或小数点,带逗号或小数点。例如:1,921.15921.159211,921re.findall(r'[-+]?\d+[,.]?\d*',st)[3]" its extracting only 1,921 but not as 1,921.15st='["FL gr_20 PT10 MT3\'><strong>1,921.15</strong>"]'我试过re.findall(r'[-+]?\d+[,.]?\d*',st)[3]它只提取 1,921 但不是 1,921.15从下面的字符串 st,使用 re 模块,我需要提取值 1,921.15st='["FL gr_20 PT10 MT3\'><strong>1,921.15</strong>"]'Expected = 1,921.15Actual = 1,921
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

一般来说,当您想使用 Python 正则表达式从文本中提取正整数或负整数或浮点数时,可以使用以下模式

re.findall(r'[-+]?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?', text)

请参阅此正则表达式演示注意\d{1,3}(?:,\d{3})+alternative 匹配以逗号作为千位分隔符的整数。您可以调整它以匹配您需要的千位分隔符,例如,\xA0如果千位分隔符是一个不间断的空格,或者\.它是一个点等。

更多选项看起来像

re.findall(r'[-+]?\d+(?:\.\d+)?', text) # Integer part is compulsory, e.g. 5.55
re.findall(r'[-+]?\d*\.?\d+', text)     # Also matches .57 or -.76

在这里,您要提取介于><字符之间的任何数字。

您可以使用

re.findall(r'>([-+]?\d[\d,.]*)<', text)

请参阅正则表达式演示

细节

  • >- 一个>字符

  • ([-+]?\d[\d,.]*)- 第 1 组:

    • [-+]?- 一个可选的-+

    • \d- 一个数字

    • [\d,.]*- 0 个或多个数字,,.

请参阅Python 演示

import re

st='''["FL gr_20 T3\'><strong>+1,921.15</strong>"]' st='["FL gr_20 T3\'><strong>-921.15</strong>"]' st='["FL gr_20 T3\'><strong>21.15</strong>"]' st='["FL gr_20 T3\'><strong>1,11,921.15</strong>"]' st='["FL gr_20 T3\'><strong>1,921</strong>"]' st='["FL gr_20 T3\'><strong>112921</strong>"]' st='["FL gr_20 T3\'><strong>1.15</strong>"]' st='["FL gr_20 T3\'><strong>1</strong>"]'''

print(re.findall(r'>([-+]?\d[\d,.]*)<', st))

# => ['+1,921.15', '-921.15', '21.15', '1,11,921.15', '1,921', '112921', '1.15', '1']



查看完整回答
反对 回复 2022-06-02
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

当数字有“,”和“。”时,您的正则表达式不会考虑在内。您可以使用以下正则表达式来匹配所有情况:

re.findall(r'[-+]?\d+(?:,\d+)?(?:\.\d+)?'


查看完整回答
反对 回复 2022-06-02
?
绝地无双

TA贡献1946条经验 获得超4个赞

看起来您试图捕获所有任何有效的数字格式,所以这会起作用:

[+-]?\d+(?:,\d{3})*(\.\d+)*

https://regex101.com/r/5bygVO/1


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信