Python 分析可能是多个项的变量

Python 分析可能是多个项的变量,python,python-2.7,Python,Python 2.7,我正试图找出一种方法来确定一个变量是由一项还是多项组成。我知道这看起来很模糊,但希望下面的内容能有所启发 我尝试了一些方法,最初我认为该项看起来像是字符串或列表,但使用if isinstance(variable,basestring)会对每个值生成True。我尝试使用len()检查长度,但当然,因为它们是字符串,所以我总是得到字符串中每个字符的计数。我还尝试了if-isinstance(变量,列表),当然这总是有一个False 我试着自己打印每个项目,下面是一些sudo代码和测试数据 vari

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

我尝试了一些方法,最初我认为该项看起来像是字符串或列表,但使用
if isinstance(variable,basestring)
会对每个值生成
True
。我尝试使用
len()
检查长度,但当然,因为它们是字符串,所以我总是得到字符串中每个字符的计数。我还尝试了
if-isinstance(变量,列表)
,当然这总是有一个
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

当然,正如前面提到的,这段代码不起作用,我不确定如何解决这个问题。任何帮助都将不胜感激。

使用实际列表而不是字符串。然后,它应该很容易循环通过项目

variable = [[u'cheese'], [u'grapes', u'oranges'], [u'apple']]

for item in variable:
    for x in item:
        print x
输出:

cheese
grapes
oranges
apple

您的变量似乎是
字符串的列表

variable = ["['cheese']", "[u'grapes', u'oranges']", "[u'apple']"]
但在该
字符串中
可能有多个项目。因此,您可能需要进行一些字符串解析。对于简单的情况,如果只想计算每个列表的元素数,最简单的方法是计算逗号+1的数目。因此,我建议使用simple
string.split(',')
逐个打印元素:

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

如果变量是list of list,那么使用它会容易得多。查看答案。

如果出于某种原因确实需要以这种方式处理字符串,您可以使用以下方法从字符串中获取真正的列表:

import ast

for item in ["[u'cheese']", "[u'grapes', u'oranges']", "[u'apple']"]:
    for food in ast.literal_eval(item):
        print(food)

您有一个字符串列表,而不是列表。每个项目都在自己打印。每一个都是一个字符串。为什么使用字符串而不是列表?为了使
isinstance(变量,列表)
的计算结果为true,您需要的是列表,而不是字符串<代码>[2]是一个列表<代码>“[2]”是一个字符串。。。看到引号了吗?这就是您的问题您可能需要检查:和“ast.literal\u eval()”function@iNoob我相信这是一个正确的问题,投了赞成票。您的案例恰好与Python案例非常“不寻常”。。特别是在方括号内的方括号中,人们通常期望它是列表列表列表,而不是字符串列表。尽管如此,这是一个有效的问题。谢谢你的回答,但是如果你使用我提供的数据,你会发现这会单独打印每个字符,而不是作为一个单词。@iNoob问题是为什么你首先会有这种奇怪的输入数据。感谢您花时间阅读问题并在上下文中实际使用数据。伊恩,我很感激你,在这里你经常会遇到一些人,他们只是想滥用op,因为他们没有按照自己的方式去做。例如,我不是在问如何不使用字符串列表以及如何使用列表。是的,我同意,如果是列表列表的话会更容易,但正如前面提到的,我没有列表列表。再次感谢很遗憾你不能分享解决方案:(
>>> 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
>>>