Python 如果patten发现介于两者之间,则从一场比赛提取到下一场比赛

Python 如果patten发现介于两者之间,则从一场比赛提取到下一场比赛,python,Python,我是python初学者。我正在努力解决一个问题,下面将对此进行解释。我也分享了不完整的python脚本,它不能解决这个问题。如果我的剧本能得到支持或指导,我将不胜感激 文件如下所示: 元素1元素1 abc1命中1 . . 元素2元素2 abc2命中1 . . 元素3元素3 abc3命中1 . . 元素4元素4 abc4命中1 . . 我需要从到元素列表匹配,这意味着对于Element2和Element4,输出文件应该如下所示: 元素2元素2 abc2命中1 . . 元素4元素4 abc4命中1

我是python初学者。我正在努力解决一个问题,下面将对此进行解释。我也分享了不完整的python脚本,它不能解决这个问题。如果我的剧本能得到支持或指导,我将不胜感激

文件如下所示:

元素1元素1 abc1命中1 . . 元素2元素2 abc2命中1 . . 元素3元素3 abc3命中1 . . 元素4元素4 abc4命中1 . . 我需要从到元素列表匹配,这意味着对于Element2和Element4,输出文件应该如下所示:

元素2元素2 abc2命中1 . . 元素4元素4 abc4命中1 . . 剧本

!/usr/bin/python x=raw\u输入您的xml文件名: xml=openx l=raw\u输入您的列表文件名: lst=openl Id=列表 ylist=列表 进口稀土 对于lst中的线: stuff=line.rstrip 东西,分开 身份证 对于Id中的元素: 对于xml格式的第1行: 如果line1.startswith: y=line1.split 打印y[1] 如果y[1]==ele:break
不建议使用正则表达式来解析XML—您应该使用lxml之类的库,您可以使用pip install lxml来安装它。然后,您可以选择使用lxml和XPath输出的适当元素,如下所示:我冒昧地关闭了XML中的标记:

content = '''
<root>
<Iteration>
  <Iteration_hit>Elememt1 Element1
    abc1 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt2 Element2
    abc2 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt3 Element3
    abc3 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt4 Element4
    abc4 hit 1
  </Iteration_hit>
</Iteration>
</root>
'''

from lxml import etree

tree = etree.XML(content)
target_elements = tree.xpath('//Iteration_hit[contains(., "Element2") or contains(., "Element4")]')

for element in target_elements:
    print(etree.tostring(element))
输出


不建议使用正则表达式来解析XML—您应该使用lxml之类的库,您可以使用pip install lxml来安装它。然后,您可以选择使用lxml和XPath输出的适当元素,如下所示:我冒昧地关闭了XML中的标记:

content = '''
<root>
<Iteration>
  <Iteration_hit>Elememt1 Element1
    abc1 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt2 Element2
    abc2 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt3 Element3
    abc3 hit 1
  </Iteration_hit>
</Iteration>
<Iteration>
  <Iteration_hit>Elememt4 Element4
    abc4 hit 1
  </Iteration_hit>
</Iteration>
</root>
'''

from lxml import etree

tree = etree.XML(content)
target_elements = tree.xpath('//Iteration_hit[contains(., "Element2") or contains(., "Element4")]')

for element in target_elements:
    print(etree.tostring(element))
输出


下面是通过Python解析xml所需的完整脚本

#!/usr/bin/python
from lxml import etree

with open('input.xml', 'r') as myfile:
    content=myfile.read().replace('\n', '\n')


lst = open('ID.list')
Id = list()
for line in lst:
    stuff=line.rstrip()
    stuff.split()
    Id.append(stuff)
for ele in Id:
    tree = etree.XML(content)
    target_elements = tree.xpath('//Iteration[contains(., ele)]')

for element in target_elements:
    print(etree.tostring(element))

下面是通过Python解析xml所需的完整脚本

#!/usr/bin/python
from lxml import etree

with open('input.xml', 'r') as myfile:
    content=myfile.read().replace('\n', '\n')


lst = open('ID.list')
Id = list()
for line in lst:
    stuff=line.rstrip()
    stuff.split()
    Id.append(stuff)
for ele in Id:
    tree = etree.XML(content)
    target_elements = tree.xpath('//Iteration[contains(., ele)]')

for element in target_elements:
    print(etree.tostring(element))

您知道有一些库可以读/写xml文件,对吗?不要使用正则表达式来解析xml。Python附带了一个xml包就是为了这个目的。。。我不知道。。。我将尝试使用库可能的副本,您知道有库可以读/写xml文件,对吗?不要使用正则表达式来解析xml。Python附带了一个xml包就是为了这个目的。。。我不知道。。。我将尝试与图书馆可能的副本高兴地帮助,并欢迎堆栈溢出。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。很乐意提供帮助,欢迎使用Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。