我试图找出一种方法来确定变量是由一个项目还是多个项目组成。我知道这似乎很模糊,但希望下面的内容会有所启发。
我尝试了一些事情,最初我认为该项目看起来像字符串或列表,但使用if isinstance(variable, basestring)
会在每个值上产生True
。我尝试使用len()
检查长度,但当然因为它们是字符串,所以我总是得到字符串中每个字符的计数。我也试过if isinstance(variable, list)
,但当然这总是False
。
我试图自己打印每个项目,下面是一些sudo代码和测试数据。
variable = ["[u'cheese']", "[u'grapes', u'oranges']", "[u'apple']"]
for item in variable:
if isinstance(item, list):
for i in item:
print i
else:
print item
当然,如上所述,这段代码不起作用,我不知道如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:3)
如果由于某种原因你确实需要以这种方式处理字符串,你可以使用ast.literal_eval
从字符串中获取真实的列表:
import ast
for item in ["[u'cheese']", "[u'grapes', u'oranges']", "[u'apple']"]:
for food in ast.literal_eval(item):
print(food)
答案 1 :(得分:1)
使用实际列表而不是字符串。然后,应该很容易遍历项目。
variable = [[u'cheese'], [u'grapes', u'oranges'], [u'apple']]
for item in variable:
for x in item:
print x
输出:
cheese
grapes
oranges
apple
答案 2 :(得分:1)
您的变量似乎是string
的列表:
variable = ["['cheese']", "[u'grapes', u'oranges']", "[u'apple']"]
但在那个string
中你可能有多个项目。因此,您可能需要进行一些字符串解析。对于你的简单情况,如果你只想计算每个列表的元素数,最简单的是通过计算逗号+ 1的数量。所以我建议使用简单的string.split(',')
逐个打印元素:< / p>
variable = ["['cheese']", "[u'grapes', u'oranges']", "[u'apple']"]
for var in variable:
words = var.split(',')
for w in words:
printedword = w.replace('u\'','').replace('\'','').replace(']','').replace('[','').strip()
print(printedword)
结果:
cheese
grapes
oranges
apple
如果您的变量是列表列表,那么使用它会容易得多。请查看pp_的答案。
答案 3 :(得分:0)
>>> variable = ["[u'cheese']", "[u'grapes', u'oranges']", "[u'apple']"]
>>> for i in variable:
... for j in i.lstrip('[').rstrip(']').split(','):
... print j.lstrip(" ").lstrip("u'").rstrip("'")
...
cheese
grapes
oranges
apple
>>>