解析可能是多个项目的变量

时间:2016-03-05 16:01:22

标签: python python-2.7

我试图找出一种方法来确定变量是由一个项目还是多个项目组成。我知道这似乎很模糊,但希望下面的内容会有所启发。

我尝试了一些事情,最初我认为该项目看起来像字符串或列表,但使用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

当然,如上所述,这段代码不起作用,我不知道如何解决这个问题。任何帮助将不胜感激。

4 个答案:

答案 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
>>>