我有一个文件,每行有3个值。它是一个相当随机的文件,这些值中的任何一个都可以是str或int。
George, 34s, Nikon
42, absent, Alan
apple, 111, 41
marked, 15, never
...
所以,我在线阅读,并使用split我得到第一个值:
theFile = r"C:\... "
tDC = open(theFile, "r")
for theLine in tDC:
a, b, c = theLine.split(',')
到目前为止一切顺利。
当我试图处理变量a
时,我陷入困境。如果它是str或者它是int,我需要以不同的方式处理它。我尝试设置a = int(a)
,但如果是字符串(例如'George'),那么我会收到错误。我尝试了if type(a) = int
或if isinstance(a,int)
,但都没有工作,因为所有值都以字符串形式出现!
那么,我如何评估不看其指定的'类型'的值?具体来说,我想读取所有a
并找到所有数字的最大值(它们将是整数,但可能很大 - 也许是六位数)。
有没有办法在行中读取,以便数字以数字形式出现,字符串以字符串形式出现,或者有可能在不查看类型的情况下评估值本身?
答案 0 :(得分:4)
第一点是你需要一些规则来告诉你哪些值是整数而哪些是不是。在包含诸如32s
之类的内容的数据集中,我不确定只是处理可能是整数的任何内容是有意义的。
但是,为简单起见,我们假设是你想要的规则:任何可能是整数的东西都是。所以,int(a)
已经相当接近了;唯一的问题是它可能会失败。你怎么用的?
Python是围绕EAFP设计的:它比请求更容易请求宽恕。尝试一下,然后处理它可能会失败的事实。正如Cyber建议的那样,使用try
声明:
try:
intvalue = int(a)
except ValueError:
# Oops, it wasn't an int, and that's fine
pass
else:
# It was an int, and now we have the int value
maxvalue = max(maxvalue, intvalue)
答案 1 :(得分:1)
isalpha()如果字符串中的所有字符都在字母中,则返回“ True”
isnumeric()如果字符串中的所有字符均为数字,则返回“ True”
所以;
data="Hello World"
print(data.isnumeric()) #it will retuns with False
print(data.isalpha()) # True
对不起,我的灵魂回答,我只是来这里看同一期杂志,我找到了不同的方式,并想与您分享
答案 2 :(得分:0)
values = theLine.split(',')
for value in values:
try:
number = int(value)
# process as number
except ValueError:
# process value as string
答案 3 :(得分:0)
此:
def ret_var(my_var: int) -> int:
try:
intvalue = int(my_var)
return my_var
except ValueError:
print("my_var not int!")