如何分析textfile中包含form VARIABLE=SOMEVALUE表达式的行

2024-06-16 10:49:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件(实际上是,.xml),它包含MACAddress=SOMEVALUE格式的某些行,并混合在其他行中。例如,一个典型的这样的行是(在一条线上):

<Adapter slot="3" enabled="false" MACAddress="080027671C79" cable="true" speed="0" type="Am79C973">

注:在上面一行中,SOMEVALUE精确地是“080027671C79”。在

所以,我想解析这个文件,并收集所有的somevalue。 我如何用python(re)做到这一点?,找到了吗?在

提前谢谢。在


Tags: falsetrueadapter格式typeenabledxmlspeed
3条回答

正则表达式将是更快的工具。在

我认为,Artsiom的限制太大了。我会这样做:

from re import findall
findall('MACAddress=([^ \t]+)', text)

但我认为你想要的是引号之间的内容。然后:

^{pr2}$

一。在

您要捕获的SOMEVALUE是否可能包含引号?在

我不确定我是否正确知道什么是MAC地址,但请确定以下两个选项:

输入:

text = """
Adapter slot="3" enabled="false" Mcable="true" speed="0" type="Am79C973">
Adapter slot="3" enabled="false" MACAddress="080027671C79" cable="true" speed="0" type="Am79C973">
Adapter slot="3" enabled="false" MACAddress="080027671C71" cable="true" speed="2" type="Am79C973">
Adapter slot="3" enabled="false" MACAddress="080024671C79" cable="true" speed="1" type="Am79C973">
Adapter slot="3" enabled="false" MACAddress="080227671C79" cable="true" speed="1" type="Am79C973">
"""

1)正则表达式:

^{pr2}$

2)串切片:

searchTxt = 'MACAddress="'
searchLen = len(searchTxt)
getMAC = lambda line: line[line.index(searchTxt) + searchLen: line.index(searchTxt) + searchLen + 12]
map(lambda line: getMAC(line), (line for line in text.split() if searchTxt in line))

它是XML,所以使用XML解析器。例如:

from xml.dom.minidom import parse

macs = [adapter.getAttribute("MACAddress") for adapter in
        parse("file.xml").getElementsByTagName("Adapter")]

相关问题 更多 >