Python数组解析

1 投票
1 回答
5603 浏览
提问于 2025-04-18 11:23

我刚接触Python,遇到了一个很简单的问题,这也是我写的第一段Python代码...

我把一个字符串拆分成一个数组,然后想比较里面的几个元素。我先打印出这个数组,想确认一下元素的数量是对的,代码如下:

打印数组的代码

def printarray(a):
     for i in range (0,len(a)):
         print( "%s - %s " % (i, a[i]) )
     print("\n\n\n--------\n\n\n")

Output:
0 - 2014-04-08
1 - 19:00:02,336
2 - INFO
3 - core.SolrCore
.....

现在我在尝试解析它:

if temp[2] is "INFO":
    print (temp[2])

我搞不懂为什么这个比较结果不是“真”。我一直没法让它正常工作。我试过用is来比较,也试过双引号、单引号,结果都不行。我还试过一些示例代码,把这个值赋给一个数组,然后那样比较就能正常工作,代码完全一样。

d = ['INFO']
if d[0] is 'INFO':
    print("works")

这让我越来越感激Perl了...

1 个回答

1

你需要用 == 来比较字符串是否相等,而不是用 isis 是用来检查两个变量是否指向内存中的同一个对象。对于字符串来说,这种情况并不总是成立,虽然在很多情况下是这样的,因为 Python 会尽量避免在内存中重复创建相同的字符串。

通常我们用 is 来检查一些单例对象,比如 None

如果这样还不行,我建议你检查一下字符串的类型、长度和表示方式。

可以这样做:

word = temp[2]
type(word) # expect str
len(word) # expect 4
print repr(word) # expect 'INFO'

撰写回答