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的数目。因此,我建议使用simplestring.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
>>>