【问题标题】:regex matched values convert to float/integers [duplicate]正则表达式匹配值转换为浮点数/整数[重复]
【发布时间】:2022-12-04 18:30:43
【问题描述】:

考虑这个例子:

import re
string = "1-3"
a, b = re.match("(\d+)-(\d+)", string).groups()
print(a + b)

这将打印:'13'。但是,我想将这些值用作数字(整数或浮点数)。当然我可以做 a = int(a) 等,但我认为必须有更方便的方法来做到这一点(尤其是当你匹配更多变量时)。

不幸的是我找不到任何关于这个的东西,最初我认为正则表达式会自动处理这个因为我说它必须是一个数字。

【问题讨论】:

  • 正则表达式只是文本搜索模式,您为什么认为它具有转换类型的能力?

标签: python regex match


【解决方案1】:

Regex 本身不会这样做,这根本不是它的工作。实现它的一种方法(如果您想要更多的“单行”解决方案)是使用 map 函数将 int() 函数应用于组元组中的每个元素。

import re
string = "1-3"
a, b = map(int, re.match("(d+)-(d+)", string).groups())
print(a + b)

【讨论】:

  • 所以当有多种类型需要匹配时(字符串和整数),这个没有优雅的解决方案
  • @TCMolenaar 它的优雅程度取决于旁观者的眼睛,我想 :) 您可能会考虑只检查字符串是否严格为数字,如果是,则将其转换为 int。那是两行代码,一点也不优雅。
猜你喜欢
  • 2015-07-18
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 2014-02-25
  • 1970-01-01
相关资源
最近更新 更多