【发布时间】:2020-05-29 12:19:38
【问题描述】:
我想编写一个函数来提取属性“fmc”的值和“标签”部分内的文本。我想使用正则表达式解决方案。
<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
<corpus>
<ver id="18" etude="EC1_Elec" elec="oui" niveau="1" critere="1.3" type="discours">
<part code="EC1_Elec_IW04_0">Ça existe sur des gros parcs Hlm mais c'est macro.</part>
</ver>
<ver id="30" etude="EC1_Elec" elec="oui" niveau="2" critere="" origine="IW" type="discours" fmc="motives">
<part code="EC1_Elec_IW01_0">Avant 75 on n'a pas isolé puis après, au fur et à mesure des règlementations.</part>
</ver>
<ver id="54" etude="EC1_Elec" elec="oui" niveau="1" critere="" origine="IW" type="discours" fmc="condition">
<part code="EC1_Elec_IW10_0">Le deuxième boitier, il est où ? s'il y en a un qui est à l'intérieur et qui remplace un bout de l'isolation, il est caché OK.</part>
</ver>
<ver id="897" etude="EC3_Elec" elec="oui" niveau="4" critere="4.1" origine="TR" type="discours" fmc="obstacle">
<part code="EC3_Elec_TR2_1">Avec l'économie d'énergie, on va imposer de plus en plus d'automatismes,</part>
<iwer>Çava influencer la demande pour ce type de solution c'est ça ?</iwer>
<part code="EC3_Elec_TR2_1">Je pense oui</part>
</ver>
</corpus>
所以我根据上面的答案修改了这个函数以适应我的数据
代码
def review_extractor(xml, category='verbatim', do_lower=False):
"""
Extract review and label
"""
# use lxml...
# parse the xml snippet into an object tree
tree = etree.fromstring(bytes(xml, encoding='utf-8'))
# find all elements that have "fmc" attribute
for e in tree.findall(".//*[@fmc]"):
label = e.xpath("./@fmc")[0]
for c in e.getchildren("./part"):
# print value of "fmc" attribute and text of child element
print(f"{label:15}{c.text}")
#
return label, c.text
所以对于我的例子,函数应该返回这个(标签前审查):
Label review_text
motivation Avant 75 on n'a pas isolé puis après, au fur et à mesure des règlementations.
condition Le deuxième boitier, il est où ? s'il y en a un qui est à l'intérieur et qui remplace un bout de l'isolation, il est caché OK.
obstacle Avec l'économie d'énergie, on va imposer de plus en plus d'automatismes,
obstacle Je pense oui
【问题讨论】:
-
你能澄清你的问题吗?为什么只使用正则表达式?
-
你的缩进不对;你需要再编辑一次。
-
@kely789456123 我不确定这与我的评论有什么关系,你能详细说明一下吗?
-
嗨@kely789456123 你不应该在人们花时间回答之后完全编辑你的问题。如果您还有其他问题,请提出新问题!
-
永远不要使用正则表达式来处理 XML。 stackoverflow.com/questions/1732348/…
标签: python regex xml xml-parsing