[英]Differentiating Python variables as str or int
我有一个文件,每行有 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
并找到所有数字的最大值(它们将是整数,但可能很大——可能是六位数)。
有没有办法在行中读取,以便数字作为数字进入,字符串作为字符串进入,或者也许有一种方法可以在不查看类型的情况下评估值本身?
第一点是您需要一些规则来告诉您哪些值是整数,哪些不是。 在包含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)
isalpha() 如果字符串中的所有字符都在字母表中,则返回“True”
isnumeric() 如果字符串中的所有字符都是数字,则返回“True”
所以;
data="Hello World"
print(data.isnumeric()) #it will retuns with False
print(data.isalpha()) # True
对不起,我的灵魂回答,我只是为了同样的问题来到这里,我找到了一种不同的方式,想与你分享
values = theLine.split(',')
for value in values:
try:
number = int(value)
# process as number
except ValueError:
# process value as string
这个 :
def ret_var(my_var: int) -> int:
try:
intvalue = int(my_var)
return my_var
except ValueError:
print("my_var not int!")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.