它是一个数组还是一个字符串?

时间:2011-02-21 23:04:07

标签: python arrays string

我给的数据可以是字符串或数组。我需要做不同的操作,具体取决于它是哪一个,所以我的问题是,如何判断对象是Python中的数组还是字符串?

conn = boto.connect_sdb(AWSKey, AWSSecret)
item = conn.get_domain(dName).get_item(imagekey)
tags = item['tag']

tags == array or string?

4 个答案:

答案 0 :(得分:5)

不可否认,字符串是序列的事实有时很尴尬。如果要根据处理“真实”序列或字符串来实现不同的行为,可以使用如下构造:

if isinstance(some_obj, basestring):
    # do string processing
else:
    # do sequence processing

您需要使用basestring来正确处理unicode和非unicode字符串。

答案 1 :(得分:1)

使用this指南确定变量的类型。

答案 2 :(得分:1)

如果用“数组”表示列表,那么这就足够了:

if isinstance(data, list):
    # [...]
if isinstance(data, str):
    # "..."

如果您的意思是array.array而不是列表:

if isinstance(data, array.array):
    # ...

答案 3 :(得分:1)

处理此问题的一个好方法是编写一个带有列表或单个项目的函数,但始终返回一个列表(在后一种情况下返回包含单个项目的列表)。

def listify(value):
    if isinstance(value, basestring):
        return [value]
    try:
        iter(value)
    except TypeError:
        return [value]
    return value

然后快速value = listify(value)你可以假装你一直有一个列表。