将Python变量区分为str或int

时间:2014-10-20 22:09:18

标签: python string 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并找到所有数字的最大值(它们将是整数,但可能很大 - 也许是六位数)。

有没有办法在行中读取,以便数字以数字形式出现,字符串以字符串形式出现,或者有可能在不查看类型的情况下评估值本身?

4 个答案:

答案 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!")