给定一个字符串,如何检查它是否为浮点数?

时间:2019-03-27 05:44:55

标签: python string

我必须使用python读取文件,该文件包含字符,数字和其他内容的组合。

从文件中读取一行后,如何检查该行是整数还是浮点数? (我必须知道此信息,该行是整数且为浮点数)

我已经尝试过这些字符串方法.isdigit().isdecimal().isnumeric(),当字符串中只有十进制数字时,这些方法似乎只返回True

有没有什么方法可以帮助我完成这项任务?

P.S .:不能使用try或任何exception方法。

==============我的文件内容================

0
[Begin Description]
xxx
[End Description]
1.1
[Begin Description]
....

我想知道我正在读取的当前行是整数0还是浮点数1.1。这就是我的问题。

6 个答案:

答案 0 :(得分:2)

您应该使用try和,除了:

但是,如果您不想使用它并且需要其他方式,请使用 regex

if re.match(r"[-+]?\d+(\.0*)?$", s):
   print("match")

答案 1 :(得分:2)

对于文件中的每一行,您都可以使用正则表达式检查它是浮点数还是整数或普通字符串

import re

float_match = re.compile("^[-+]?[0-9]*[.][0-9]+$")
int_match = re.compile("^[-+]?[0-9]+$")

lines = ["\t23\n", "24.5", "-23", "0.23", "-23.56", ".89", "-122", "-abc.cb"]

for line in lines:
    line = line.strip()

    if int_match.match(line):
        print("int")
    elif float_match.match(line):
        print("float")
    else:
        print("str")


结果:

  

int
  浮动
  整数
  浮动
  浮动
  浮动
  整数
  str

工作原理: int_match = re.compile("^[-+]?[0-9]+$")

^:在str开头
[-+]?:可选的+或-
[0-9]+:一个或多个数字
$:字符串的结尾

float_match = re.compile("^[-+]?[0-9]*[.][0-9]+$")

^[-+]?:以+或-可选开头。
[0-9]*:任意数字或无数字。
[.]:点
[0-9]+:一位或多位数字
$:结束

答案 2 :(得分:1)

您可以使用.split()将其拆分为单词,并使用字符串方法。

示例代码(请注意,如果在float而不是点中使用split方法参数,则应将其更改为逗号):

def float_checker(strinput):
    digit_res = None
    for part in strinput.split('.'):
        digit_res = True if part.isnumeric() else False
    if digit_res:
        return True
    return False

if __name__ == '__main__':
    while True:
        print(float_checker(input('Input for float check (Stop with CTRL+C): ')))

答案 3 :(得分:1)

我希望这会有所帮助

params?.value

答案 4 :(得分:1)

尝试一下:

import re
line1 = '0'
line2 = 'description one'
line3 = '1.1'
line4 = 'begin description'
lines = [line1, line2, line3, line4] # with readlines() you can get it directly
for i in lines:
   if re.findall("[+-]?\d+", i) and not re.findall("[+-]?\d+\.\d+", i):
     print('int found')
   elif re.findall("[+-]?\d+\.\d+", i):
     print('float found')
   else:
     print('no numeric found')

输出

int found
no numeric found
float found
no numeric found

答案 5 :(得分:0)

这比re

尽管这不是类型检查,但是当您读取字符串0或1.1时,您可以像

line='1.1'
if '.' in line:
    print("float")
else:
    print("int")