【问题标题】:How do I manually strip XML tags?如何手动剥离 XML 标签?
【发布时间】:2017-04-25 13:06:30
【问题描述】:

我正在尝试删除标签并创建一个新文件,但我不知道如何完成此操作。我正在提供一个具有 XML 标签的文件,我想使用条带和拆分来制作一个列表/字符串。我不能使用 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 岁 岁。他去了科罗拉多州。 Kapri Bibbs,RB,穿着 #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)

显然这段代码是不正确的。我的想法是遍历字符串并尝试剥离 &lt;xxxxx&gt; 那个代码。我只是不知道如何处理它。之后,我想把它放到我发布的句子中。

【问题讨论】:

  • 您无法导入库。因此不能使用 xml 解析器
  • 这个question的答案有帮助吗?
  • 当你找到&lt;然后设置skip=True,当你找到&gt;然后设置skip=False然后使用skip将char复制到新列表。最后连接新字符串中的所有字符。
  • @imaqtpie - 为什么不能导入库?这是个人挑战还是业务需求?了解import 只是在寻找其他 .py 脚本。像 txt 一样对待 xml 会让 xml 大师心碎!

标签: python


【解决方案1】:

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

当你找到&lt;然后设置skip=True,当你找到&gt;然后设置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)

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

【讨论】:

    猜你喜欢
    • 2012-05-27
    • 2014-03-16
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2012-11-21
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多