查找给定字符串中的数字子串

问题描述 投票:0回答:1

无法理解部分代码的工作原理。代码应该找到所有数字并创建 int 或 float 值,如果给定字符串中第一个数字之前有“-”,则值应该带有“-”符号。如果给定字符串中的数字之间有点,则应使用第一个点来创建浮点值,其他点将被忽略。

def reveal_num(line: str):
    
    res = sign = ""
    dot = False
    
    for char in line:
        if char in "+-" and not res:
            sign = "-"*(char == "-")
        elif char in "." and not dot:
            dot = True
            res += "."
        elif char.isdigit():
            res += char
        
    if res:
        return(int, float)[dot](sign + res)

print(reveal_num("-aB%|_-+-2ADS.12+3.ADS1.2"))

看不懂线路。 *(char == "-") 的作用是什么?

sign = "-"*(char == "-")

看不懂线路。

return(int, float)[dot](sign + res)

你能解释一下这些线条吗

python string integer
1个回答
0
投票

谁写的?这似乎是故意写得尽可能令人困惑......

sign = "-"*(char == "-")
只是一种非常晦涩的写作方式:

if char == "-":
    sign = "="

同样,

return (int, float)[dot](sign + res)
是一种非常晦涩的写法:

if dot:
    return float(sign + res)
else:
    return int(res)
© www.soinside.com 2019 - 2024. All rights reserved.