在python2.7中STR类型未更改为INT

2024-06-28 19:59:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个剧本要拼。它做了很多数字洗牌之类的事情,它记录本地机器上的资源利用率。我对剧本的一部分很感兴趣。我试图从字符串的一部分创建一个int。下面是脚本中有问题的部分。。。你知道吗

j = item[11:len(item)]
if j.endswith("L"):
    j = int(j[0:len(j)-1])
print type(j)

item是一个字符串,它是从一系列的字符串切片/拆分中获得的。在本例中,项将与以下内容类似-“bytes_recv=3829381938203L”或“bytes_recv=1302”。这四行将删去非十进制字符,如果有,则删除尾随的L,然后打印变量J的类型,在我的头中应该是一个整数,因为代码中的第三行将其设置为int with int()。当我运行脚本时,它总是告诉我j变量的类型是'str'。这让我的脚本在碰到下一行代码时会自暴自弃

sndf = int(((float(int(j) - ndic[nds][len(ndic[nds])-1])/1024)/1024))

ndic字典包含来自资源监视的正在运行的数据点列表,以便在以后的绘图中使用。这行代码是从dictionary键的列表中取最后一个条目,然后从j值中减去它,再除以1024,两次。我不认为上面的代码行是导致错误的原因,但可能是因为我包含了它。这是我执行脚本时遇到的错误

TypeError: unsupported operand type(s) for -: 'int' and 'str'

我在sndf='s代码行上收到了这个错误。你知道吗


Tags: 字符串代码脚本类型lenbytestype错误
2条回答

Python不会神奇地转换类型。ndic[nds][len(ndic[nds])-1]也是一个字符串。你知道吗

问题可能是,如果j没有以"L"结尾,就不能将它转换成int。你知道吗

当我用item = 'bytes_recv=3829381938203L'运行脚本时,它运行得很好,j是一个int,但是用item = 'bytes_recv=1302',if块中的代码不会执行,因此不会进行转换。你知道吗

如果使用long()而不是int(),实际上可以将"L"留在那里,甚至不需要if语句:

j = long(j[0:len(j)])

相关问题 更多 >