如何手动剥离XML标记?

时间:2016-12-10 00:18:30

标签: python

我尝试删除标记并创建新文件,但我无法看到如何完成此操作。我给出了一个带有XML标签的文件,我想使用strip和split来制作一个列表/字符串。我无法使用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个   团队中的球员。 ILB的扎伊尔安德森穿着#50。他身高5英尺11英寸   英寸高,重220磅。他今年24岁   岁。他去了内布拉斯加州。 OLB的Shaquil Barrett穿着#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>该代码。我只是不知道如何处理它。在那之后,我想把它放到我发布的句子中。

1 个答案:

答案 0 :(得分:0)

要删除标签,请使用变量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)

如果您需要来自标签的数据,那么您将需要构建解析器 - 识别开始和结束标签,记住标签名称,并可能使用标签构建树。所以你需要做更多的工作。