You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取XML/JSON中用户rep字段值生成列表的问题

解决XML命名空间问题并提取rep字段

带命名空间XML的处理

XML命名空间是导致你提取结果为空的核心原因——直接使用<rep>或<user>标签名查找时,ElementTree会忽略带命名空间的元素,因为这些元素的实际标签是{命名空间URL}标签名格式。

假设你的XML示例如下:

9876 2024-06-01T09:00:00 4321 2024-05-30T16:45:00

修复后的XML提取代码

import xml.etree.ElementTree as ET
from datetime import datetime

# 替换为你XML中的实际命名空间URL
NAMESPACE = {'api': 'http://your-api-namespace.com/v1'}

# 如果API返回的是字符串而非文件,用ET.fromstring(xml_response)替代parse
tree = ET.parse('users.xml')
root = tree.getroot()

# 提取rep及可选的登录日期
user_records = []
for user in root.findall('api:user', NAMESPACE):
    rep_value = user.find('api:rep', NAMESPACE).text
    login_date = user.find('api:last_login', NAMESPACE).text
    user_records.append({'rep': rep_value, 'last_login': login_date})

# 生成纯rep列表
rep_list = [item['rep'] for item in user_records]
print(rep_list)  # 输出: ['9876', '4321']

# 可选:按最后登录日期降序排序
sorted_records = sorted(user_records, key=lambda x: datetime.fromisoformat(x['last_login']), reverse=True)
sorted_rep_list = [item['rep'] for item in sorted_records]
print(sorted_rep_list)  # 输出: ['9876', '4321']

JSON格式数据的处理

JSON无需处理命名空间,直接遍历字典提取字段即可:

假设你的JSON示例:

{
  "users": [
    {"rep": "9876", "last_login": "2024-06-01T09:00:00"},
    {"rep": "4321", "last_login": "2024-05-30T16:45:00"}
  ]
}

JSON提取代码

import json
from datetime import datetime

# 如果API返回字符串,用json.loads(json_response)替代open
with open('users.json', 'r') as f:
    data = json.load(f)

# 提取rep列表
rep_list = [user['rep'] for user in data['users']]
print(rep_list)  # 输出: ['9876', '4321']

# 可选:按登录日期排序
sorted_users = sorted(data['users'], key=lambda x: datetime.fromisoformat(x['last_login']), reverse=True)
sorted_rep_list = [u['rep'] for u in sorted_users]
print(sorted_rep_list)

关键提示

  • 若XML有多个命名空间,只需在NAMESPACE字典中添加对应的前缀和URL即可。
  • 如果登录日期格式不是ISO标准,替换datetime.fromisoformat为datetime.strptime(x['last_login'], '你的日期格式')。
  • API返回的原始响应(字符串)可直接传入ET.fromstring()或json.loads(),无需写入文件。

内容的提问来源于stack exchange,提问作者Wes Graham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:10:44