Python 单个变量中的两个列表

Python 单个变量中的两个列表,python,list,python-2.7,Python,List,Python 2.7,这是我解析的xml文件的一部分 - <a:p> - <a:r> <a:rPr lang="en-US" sz="3600" dirty="0" /> <a:t>36%</a:t> </a:r> </a:p> - <a:p> - <a:r> <a:rPr lang="en-US" sz="36

这是我解析的xml文件的一部分

- <a:p>
    - <a:r>
          <a:rPr lang="en-US" sz="3600" dirty="0" /> 
          <a:t>36%</a:t> 
     </a:r>
  </a:p>
- <a:p>
    - <a:r>
          <a:rPr lang="en-US" sz="3600" dirty="0" smtClean="0" /> 
          <a:t /> 
      </a:r>
      <a:endParaRPr lang="en-US" sz="3600" dirty="0" /> 
  </a:p>
  </p:txBody>
  </p:sp>
我有一个由两个列表组成的变量作为输出。。比如说

print e

导致

['38%']
[' ']
现在,我想删除第二个列表,即
['']
,只打印
['38%]


有什么建议我可以这样做吗?自从我开始学习列表以来,我从未遇到过这种情况。你有一个变量,它包含一个列表,其中只有一个字符串

很明显,您已经告诉我们如何获得价值:

e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)
repr
'd时,表示为字符串的事物。因此,
['38%]
['']
都是打印结果时可以看到的东西

问题很明显,您正在搜索
e
两次,并且
打印
两次(或者在其他地方执行类似的搜索并打印)

从您的编辑:

path1 = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p', namespaces=NAMESPACES)    
for a in path1:
    b = a.xpath('./a:r/a:rPr[@sz="3600" and @dirty="0"]',namespaces=NAMESPACES)
    for c in b:
        d = c.getparent().getparent()
        e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)
        print e
循环中有
e=…
print e
。您的
a
搜索返回两个元素(每个元素都有一个
b
搜索返回一个元素),或者您的
b
搜索返回一个元素

如果您只需要任何内容的第一个结果,只要在到达
打印
后停止循环即可。例如,如果它位于函数内部:

path1 = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p', namespaces=NAMESPACES)    
for a in path1:
    b = a.xpath('./a:r/a:rPr[@sz="3600" and @dirty="0"]',namespaces=NAMESPACES)
    for c in b:
        d = c.getparent().getparent()
        e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)
        print e
        return
但是,如果您想真正了解发生了什么,应尝试在多个步骤中打印出值:

path1 = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p', namespaces=NAMESPACES)
print path1
for a in path1:
    b = a.xpath('./a:r/a:rPr[@sz="3600" and @dirty="0"]',namespaces=NAMESPACES)
    print ' ', b
    for c in b:
        d = c.getparent().getparent()
        e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)
        print e

e
的类型是什么?以这种方式打印,它几乎肯定是一个字符串。请显示
repr(e)
的输出。您在问题中显示的内容没有帮助,因为不清楚
e
的类型。您正在使用哪个库包含
xpath
方法?@Sangamesh请不要使用print。请在python控制台中准确地键入
repr(e)
,并将包含该语句的整行内容以及整个输出复制到下面的提示符中。我认为发生的情况是,您将
print e
行放入脚本的循环中(或多次调用的函数),因此它实际上运行了两次。请检查情况是否如此。事实上,你说打印类型(e)显示了两种类型,这很有可能。你不可能“在一个变量中有两个列表”。变量中可以有一个
list
(或一个
tuple
或一个
foo.bar.Baz
),其中
list
包含两个列表作为元素。如果是这样的话,我们需要知道你拥有什么类型的东西,然后才能告诉你如何获得第一个元素。没错!!我正在循环的地方缺少一个值。我找到了它。谢谢
path1 = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p', namespaces=NAMESPACES)
print path1
for a in path1:
    b = a.xpath('./a:r/a:rPr[@sz="3600" and @dirty="0"]',namespaces=NAMESPACES)
    print ' ', b
    for c in b:
        d = c.getparent().getparent()
        e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)
        print e