我给的数据可以是字符串或数组。我需要做不同的操作,具体取决于它是哪一个,所以我的问题是,如何判断对象是Python中的数组还是字符串?
conn = boto.connect_sdb(AWSKey, AWSSecret)
item = conn.get_domain(dName).get_item(imagekey)
tags = item['tag']
tags == array or string?
答案 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)
你可以假装你一直有一个列表。