3 回答
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']
TA贡献1757条经验 获得超8个赞
当数字有“,”和“。”时,您的正则表达式不会考虑在内。您可以使用以下正则表达式来匹配所有情况:
re.findall(r'[-+]?\d+(?:,\d+)?(?:\.\d+)?'
TA贡献1946条经验 获得超4个赞
添加回答
举报