【问题标题】:Parsing XML in Python finding element by id-tag通过 id-tag 在 Python 中解析 XML 查找元素
【发布时间】:2018-04-12 13:42:11
【问题描述】:

我正在尝试使用正则表达式来解析 XML 文件(在我的情况下,这似乎是正确的方法)。

我的 XML 如下所示:

line='<form id="main">\n<input {disable}  style="display:none" id="CALLERID" 
value="58713780">\n<input {disable}  style="display:none" id="GR_BUS" 
value="VGH1"\n<td><input id="label" {disable} style="font- 
size:9px;width:100%;margin:0;padding:1;" type=text></td>\n</form>>'

要访问文本,我正在使用: attr = re.search('[@id = (CALLERID|GR_BUS|label)]', 行)

我想得到解析xml格式的结果:

<CALLERID>58713780</CALLERID><GR_BUS>VGH1</GR_BUS><label></label>

但没有返回任何内容。

有人能指出我做错了什么吗? 感谢

【问题讨论】:

    标签: python xml python-3.x xml-parsing


    【解决方案1】:

    这是输出:

    line = '''<form id="main">\n
    <input {disable}  style="display:none" id="CALLERID" value = "58713780" >\n
    <input{disable} style = "display:none" id = "GR_BUS" value = "VGH1"\n >
    < td >< inputid = "label"{disable}style = "font-size: 9px;width: 100 %;margin: 0;padding: 1;" type=text></td>
    </form>>'''
    
    
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(line, "lxml")
    for values in soup.findAll("input"):
        id = values["id"]
        value = values["value"]
        print(id, value)
    

    输出:

    ('CALLERID', '58713780')
    ('GR_BUS', 'VGH1')
    

    【讨论】:

      【解决方案2】:

      首先,您的示例中的不是有效的 XML,而是 HTML。考虑到字符串中的 {disable} 指令,更可能是 HTML 模板。

      其次,您的正则表达式无效,因为它没有考虑 id 属性周围的引号。我还假设您也需要 value 属性的捕获组,以便构建最终结果并考虑到该值并不总是存在(即在标签 id 的情况下)。

      执行此操作的正则表达式是id=\"(CALLERID|GR_BUS|label)\"(\s*value=\"(\S*)\")?。对于每个匹配,第一个捕获组将包含 id 属性的值,第三个组(如果存在)将包含 value 属性的值。

      您可以在https://regex101.com 测试它,选择python 作为语言。

      【讨论】:

      • @Rachitkapadia 确实,我已经修好了
      • 那么请让答案有用,以便其他用户轻松获得正确答案
      • @Rachitkapadia 我不确定您指的是什么。答案中有一个完美运行的正则表达式,在问题作者使用链接中提供的在线工具提供的示例上进行了测试。您需要做的就是在该工具中复制正则表达式和示例。
      猜你喜欢
      • 2017-05-02
      • 1970-01-01
      • 2016-05-30
      • 2015-03-04
      • 1970-01-01
      • 2015-06-05
      • 2011-10-16
      • 2020-02-06
      • 2020-05-07
      相关资源
      最近更新 更多