单个变量中的两个列表

时间:2013-06-07 23:44:08

标签: 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="3600" dirty="0" smtClean="0" /> 
          <a:t /> 
      </a:r>
      <a:endParaRPr lang="en-US" sz="3600" dirty="0" /> 
  </a:p>
  </p:txBody>
  </p:sp>

我必须从a:t标签中取出文本,并且代码段是beolw !!

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

我有一个变量,它包含两个列表作为输出..例如

print e

结果

['38%']
[' ']

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

任何建议我怎么能这样做?自从我开始学习列表之前,我从未遇到过这种情况

1 个答案:

答案 0 :(得分:0)

您有一个包含单个列表的变量,其中包含一个字符串。

现在很明显,你告诉我们你是如何获得价值的:

e = d.xpath('./a:r/a:t/text()', namespaces=NAMESPACES)

lxml's xpath method returns a list一些事物,当repr'表示为字符串时。因此,['38%'][' ']都是print结果时可以看到的内容。

问题显然是您正在搜索e两次,print两次(或进行类似搜索并在其他地方打印)。

从你的编辑:

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搜索会返回两个元素(每个元素都有一个返回1个元素的b搜索),或者您的b搜索会返回。

如果您只想获得任何结果,可以在到达print后停止循环。例如,如果它在函数内:

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