繁体   English   中英

将 Python 变量区分为 str 或 int

[英]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) = intif 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM