我必须使用python读取文件,该文件包含字符,数字和其他内容的组合。
从文件中读取一行后,如何检查该行是整数还是浮点数? (我必须知道此信息,该行是整数且为浮点数)
我已经尝试过这些字符串方法.isdigit()
,.isdecimal()
,.isnumeric()
,当字符串中只有十进制数字时,这些方法似乎只返回True
。
有没有什么方法可以帮助我完成这项任务?
P.S .:不能使用try
或任何exception
方法。
==============我的文件内容================
0
[Begin Description]
xxx
[End Description]
1.1
[Begin Description]
....
我想知道我正在读取的当前行是整数0还是浮点数1.1。这就是我的问题。
答案 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")