【问题标题】:Concatenate values in a list (XML,Python)连接列表中的值(XML,Python)
【发布时间】:2010-12-27 12:20:33
【问题描述】:

我的 XML 有问题。我要做的是连接从 XML 示例中提取的列表中的值

<?xml version="1.0" encoding="UTF-8"?>
<locales>
<api-url>url</api-url>
<locale>
    <market>AE</market>
    <languages>
        <language>ar</language>
    </languages>
</locale>
<locale>
    <market>AM</market>
    <languages>
        <language>hy</language>
        <language>ru</language>
    </languages>
</locale>

我做的是。

inputXml  = lxml.etree.parse('xml')

market = inputXml.xpath('//locale/market/text()')

Lang =  inputXml.xpath('//locale[i]/languages//language/text()')

我必须像这样连接来自 market 和 Lang 的值 -->AE_ar, AM_hy, AM_ru

我用 for 循环尝试了它,但它对我没有锻炼。我越来越喜欢AE_ar,AE_ar,AE_ar, AM_hy,AM_hy,AM_hy。有没有另一种方法,比如在 Python 中使用 Xslt 或其他方法来做到这一点

【问题讨论】:

  • 你的循环是什么样子的?

标签: python xml concatenation


【解决方案1】:
import lxml.etree as ET
import io

content='''\
<?xml version="1.0" encoding="UTF-8"?>
<locales>
<api-url>url</api-url>
<locale>
    <market>AE</market>
    <languages>
        <language>ar</language>
    </languages>
</locale>
<locale>
    <market>AM</market>
    <languages>
        <language>hy</language>
        <language>ru</language>
    </languages>
</locale>
</locales>
'''
inputXml=ET.parse(io.BytesIO(content))

for locale in inputXml.xpath('//locale'):
    market = locale.xpath('market/text()')[0]
    for lang in locale.xpath('languages/language/text()'):
        print('{m}_{l}'.format(m=market,l=lang))

产量

AE_ar
AM_hy
AM_ru

【讨论】:

  • 非常感谢,这正是我正在寻找的,我的 for 循环中的逻辑是错误的
猜你喜欢
  • 2018-04-27
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 2021-05-19
  • 2017-10-04
  • 2011-12-09
相关资源
最近更新 更多