拆分变量并在 HTML 树中添加级别

split variable and add level in HTML tree

提问人:Brian 提问时间:10/30/2017 最后编辑:GahanBrian 更新时间:10/31/2017 访问量:61

问:

我需要创建如下所示的 HTML(该文件实际上具有“.nfo”扩展名,但它是一个 html 文件)(称为“MovieNFO.nfo”):

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
  <title></title>
  <sorttitle></sorttitle>
  <plot></plot>
  <thumb></thumb>
  <mpaa></mpaa>
  <genre></genre>
  <premiered></premiered>
  <actor>
    <name></name>
    <order></order>
  </actor>
  <art>
    <fanart></fanart>
    <poster></poster>
  </art>
</movie>

在我的 Python 脚本中,我使用 ElementTree 创建了层次结构:

import xml.etree.ElementTree as ET
tree = ET.parse(MovieNFO)
root = tree.getroot()

我有一个变量(艺术家),其中包含给定电影的演员列表(在本例中,假设艺术家的值为“Jason Bateman、Kathryn Hahn、Allison Janney、Philip Baker Hall”)。然后,我可以用计数器填充“Order”标签。

我的代码目前是:

if artist is not None:
    actorcount=0
    root[7][0].text = artist[1]
    root[7][1].text = str(actorcount)
tree.write(fullnfoname, encoding="UTF-8", xml_declaration=True)

这给了我:

 <actor>
    <name>Jason Bateman, Kathryn Hahn, Allison Janney, Philip Baker Hall</name>
    <order>0</order>
  </actor>

我想要的是:

 <actor>
    <name>Jason Bateman</name>
    <order>0</order>
  </actor>
 <actor>
    <name>Kathryn Hahn</name>
    <order>1</order>
  </actor>
 <actor>
    <name>Allison Janney</name>
    <order>2</order>
  </actor>
 <actor>
    <name>Philip Baker Hall</name>
    <order>3</order>
  </actor>

我想我需要拆分变量“艺术家”,但我不知道如何添加一个新的子键(用于其他演员)。换句话说,我得到了这个工作,因为一个标签已经在那里了。如何为其他参与者创建更多标签,尤其是当我不知道拆分后会有多少个标签时?

python-2.7 xml html 解析 elementtree

评论

0赞 mzjn 11/1/2017
这个过程的输入究竟是什么?你解析了一个名为 .什么?它与变量有什么关系?MovieNFOartist
0赞 Brian 11/1/2017
MovieNFO 是帖子中的第一个文件(称为 MoveNFO.nfo),我用“tree = ET.parse(MovieNFO)”读入它。我在代码中使用 ffprobe 来获取我需要放入 MovieNFO 文件中的演员、电影标题等。这就是艺术家的来源。当我解析 ffprobe 的输出时,我使用的代码是: if line.startswith('TAG:artist='): artist = line.split('TAG:artist=', 1)
0赞 mzjn 11/1/2017
请编辑问题,而不是添加评论。什么是ffprobe?
0赞 Brian 11/1/2017
我不知道如何结束这个问题。我已经解决了我自己的问题。我没有尝试读取和编辑 HTML 文件,而是从头开始创建它。感谢您的帮助!

答: 暂无答案