我如何手动剥离XML标签



我正在尝试删除标签并创建一个新文件,但我看不到如何完成此操作。我正在提供一个具有XML标签的文件,我想使用strip并拆分将其制成列表/字符串。我不能使用XML解析器或任何其他库。

这是文本文件:

<team> <name>Denver Broncos</name> <players> <player> <jno>50</jno> <fname>Zaire</fname> <lname>Anderson</lname> <height>5-11</height> <weight>220</weight> <age>24</age> <position>ILB</position> <school>Nebraska</school> </player> <player> <jno>48</jno> <fname>Shaquil</fname> <lname>Barrett</lname> <height>6-2</height> <weight>250</weight> <age>23</age> <position>OLB</position> <school>Colorado State</school> </player> <player> <jno>35</jno> <fname>Kapri</fname> <lname>Bibbs</lname> <height>5-11</height> <weight>203</weight> <age>23</age> <position>RB</position> <school>Colorado State</school> </player> </players> </team>

我想使用字符串/列表来产生以下句子:

这是丹佛野马队的阵容。有3个 团队中的球员。Zaire Anderson,ILB,穿着#50。他是5英尺11 高英寸,重220磅。他是24岁 年龄。他去了内布拉斯加州。Shaquil Barrett,OLB,穿着#48。他是6 脚高2英寸,重250磅。他是23岁 年龄。他去了科罗拉多州。RB Kapri Bibbs穿着#48。他5岁 脚高11英寸,重203磅。他是23岁 年龄。他去了科罗拉多州。

def test(filename):
    f=open(filename,"r")
    line = f.readline()
    f2 = open("BearsRoster.txt", "w")
    print line
    myList = []
    stringl = ""
    for i in line:
        if i == ("<"):
            while i != ">":
                line.remove(i)

        else:

            stringl = stringl + i
            myList.append(stringl)
            stringl = ""
        else:
            stringl = stringl + i
    print myList
    for i in myList:
        print i
        print myList
        if i[0] == "<" or " ":
            myList.remove(i)

显然,此代码不正确。我的想法是通过字符串尝试剥离<xxxxx>该代码。我只是不知道该如何处理。之后,我想将其放入我发布的句子中。

要删除标签使用变量skip=True/False来控制何时将char复制到新字符串。

找到<然后设置skip=True时,当您找到>时,请设置skip=False

data = '''<team> <name>Denver Broncos</name> <players> <player> <jno>50</jno> <fname>Zaire</fname> <lname>Anderson</lname> <height>5-11</height> <weight>220</weight> <age>24</age> <position>ILB</position> <school>Nebraska</school> </player> <player> <jno>48</jno> <fname>Shaquil</fname> <lname>Barrett</lname> <height>6-2</height> <weight>250</weight> <age>23</age> <position>OLB</position> <school>Colorado State</school> </player> <player> <jno>35</jno> <fname>Kapri</fname> <lname>Bibbs</lname> <height>5-11</height> <weight>203</weight> <age>23</age> <position>RB</position> <school>Colorado State</school> </player> </players> </team>'''
skip = False
result = ''
for char in data:
    if char == '<':
        skip = True
    elif char == '>':
        skip = False
    elif not skip:
        result += char
print(result)

如果您需要来自标签的数据,则必须构建解析器 - 识别打开和关闭标签,记住标签名称,并可能使用标签构建树。因此,您需要更多的工作。

最新更新