【发布时间】:2020-07-02 08:59:17
【问题描述】:
我需要为用户定义的输入中所有匹配的浮点数打印 (True),如果输入不是浮点数,我需要打印 (False)。
到目前为止,我想出了这个:
import re
user_input = input() # the input will be (+4.9, 4.0, 2.89, 4, somerandomstuff)
pattern = re.compile(r'[+-]?[0-9]+\.[0-9]+') #pattern to match floating point numbers
matches = pattern.finditer(user_input)
for match in matches:
print(bool(match))
预期结果:
输入 = (+4.9, 4.0, 2.89, 4, somerandomstuff, stackoverflow)
是的 真的 真的 错误的 错误的 假的
感谢您的帮助!
【问题讨论】:
-
如果 user_input 是一个包含所有值的字符串,模式只会找到匹配的结果。我认为如果要打印 False,则必须尝试单独匹配每个值。
-
您是否要匹配包含小数点的数字?它们是否可以包含指数,例如
4.9e3?一个典型的模式是字符串(a)有一个可选的符号(“+”或“-”),有一个句点,前面有数字,后面有数字,或者两者都有(但不是两者都没有),并且可选结束带有“e”或“E”后跟可选符号,后跟数字或 (b) 具有可选符号、数字和指数部分。即,字符串包含小数点或指数或两者。鉴于此,您知道如何为此编写正则表达式吗?对于它的一部分? -
@EricPostpischil 不,我不是要匹配指数。顺便说一句,谢谢。
-
@Thefourthbird 是的,我尝试了个人匹配但失败了。
-
该模式拒绝它们,因为我编写的正则表达式不希望这被视为漂浮。 @Thefourthbird 正是我需要的,谢谢伙计。
标签: regex python-3.x floating-point boolean pattern-matching