Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从XML文件解析和提取字段值_Python_Xml - Fatal编程技术网

Python 从XML文件解析和提取字段值

Python 从XML文件解析和提取字段值,python,xml,Python,Xml,我有两个GB的XML格式的日志文件。我感兴趣的是找到带有特定命令的行,并提取命令的用户 也就是说,我想检查所有行中的一个特定字段是否有特定值,然后从同一行的另一个字段中提取一个未知值。我该怎么做呢?(我曾试图在不了解其工作原理的情况下查阅文档和其他来源。) 我目前使用的是Python2.7.15,但如果3.*更好或更简单,我将使用它 下面是我感兴趣的日志文件中的一行示例: <?xml version="1.0" encoding="UTF-8"?> <IHEYr4>

我有两个GB的XML格式的日志文件。我感兴趣的是找到带有特定命令的行,并提取命令的用户

也就是说,我想检查所有行中的一个特定字段是否有特定值,然后从同一行的另一个字段中提取一个未知值。我该怎么做呢?(我曾试图在不了解其工作原理的情况下查阅文档和其他来源。)

我目前使用的是Python2.7.15,但如果3.*更好或更简单,我将使用它

下面是我感兴趣的日志文件中的一行示例:

<?xml version="1.0" encoding="UTF-8"?>
<IHEYr4>
  <UserAuthenticated>
    <LocalUsername>User1</LocalUsername>
    <Action>Login</Action>
  </UserAuthenticated>
  <Host>192.168.1.15</Host>
  <TimeStamp>2018-01-18T02:31:00</TimeStamp>
</IHEYr4>

用户1
登录
192.168.1.15
2018-01-18T02:31:00

使用
ElementTree

演示:

x = """<?xml version="1.0" encoding="UTF-8"?>
<IHEYr4>
  <UserAuthenticated>
    <LocalUsername>User1</LocalUsername>
    <Action>Login</Action>
  </UserAuthenticated>
  <Host>192.168.1.15</Host>
  <TimeStamp>2018-01-18T02:31:00</TimeStamp>
</IHEYr4>

"""

import xml.etree.ElementTree as ET
xmlVal = ET.fromstring(x)
if xmlVal.find("UserAuthenticated/Action").text == 'Login':
    print(xmlVal.find("Host").text, xmlVal.find("TimeStamp").text)
('192.168.1.15', '2018-01-18T02:31:00')

你能添加一个你期望得到的输出的例子吗?我想目标是提取它们并将它们保存在变量中,以用于写入其他文件等等。很抱歉,没有例子。你的问题写“具体”,但你没有具体说明。要查找哪些元素?要检查哪个值?您希望获取其他哪个字段的值。根据您问题中的XML,向我们解释您期望的输出是什么以及为什么。我想检查标记,看看它是否为登录,如果是,请保存。