2016-03-05 55 views
-1

我试图找出一种方法来确定变量是否包含一个项目或多个项目。我知道这似乎相当模糊,但希望下面将阐明一些亮点。解析一个变量可能是多个项目

我已经尝试了一些东西,起初我还以为这个项目看起来就像是一个字符串或列表,但使用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

是的,我可以看到,但是做一个简单的'for i in variable:print i'生成[u'grapes',u'oranges']或[u'apple']我希望每个项目都能自己打印 – iNoob

+3

每个项目_is_自己打印。每一个都是单个字符串。你为什么使用字符串而不是列表? – Chris

回答

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) 
+0

谢谢克里斯,虐待ast看。 – iNoob

1

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

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

for item in variable: 
    for x in item: 
     print x 

输出:

cheese 
grapes 
oranges 
apple 
+1

感谢您的回复,但如果您使用了我提供给您的数据,请参阅此部分将自行打印每个字符,而不是单词。 – iNoob

+2

@iNoob问题是为什么你首先有这种奇怪的输入数据。这可能是[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

1

你的变量似乎是string列表:

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

但在string你可能有多个项目。因此,你可能需要做一些字符串解析。为了您简单的例子,如果你只想计算每个列表元素的数量,最简单的是通过计算+ 1,因此,我建议用简单的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 

这本来是一个更容易使用,如果你的变量是列表的列表,虽然工作。检查出pp_答案。

+0

感谢您花时间阅读问题并实际使用上下文中的数据。赞赏伊恩,很多时候你会在这里得到一些人,他们只是想虐待他们没有做的事情,他们会做一些事情。而不是实际看问题,例如,我不问如何不使用字符串列表以及如何使用列表列表。 – iNoob

+0

是的,我同意,如果它是列表清单,会更容易,但如前所述,我没有列表清单。再次感谢 – iNoob

+0

@iNoob没问题。 ;)似乎你有更好的解决方案由克里斯.. – Ian

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 
>>> 
相关问题