如何用Python从给定XML输出中提取suggestion的data数据?
提取字典中所有suggestion的@data值
你提供的是XML解析后生成的字典结构,要提取所有@data值可以用以下几种Python实现方式:
1. 简洁的列表推导式
直接通过层级索引遍历列表,提取目标值:
response_data = { 'toplevel': { 'CompleteSuggestion': [ {'suggestion': {'@data': 'cola cao'}}, {'suggestion': {'@data': 'cola cao wikipedia'}}, {'suggestion': {'@data': 'cola cao kaufen'}}, {'suggestion': {'@data': 'cola cao koffein'}}, {'suggestion': {'@data': 'cola cao turbo'}}, {'suggestion': {'@data': 'cola cao kaufen schweiz'}}, {'suggestion': {'@data': 'cola cao energy'}}, {'suggestion': {'@data': 'cola cao original'}}, {'suggestion': {'@data': 'cola cao rewe'}}, {'suggestion': {'@data': 'cola cao noir'}} ] } } # 提取所有@data值 suggestions = [item['suggestion']['@data'] for item in response_data['toplevel']['CompleteSuggestion']] print(suggestions)
执行后输出:
['cola cao', 'cola cao wikipedia', 'cola cao kaufen', 'cola cao koffein', 'cola cao turbo', 'cola cao kaufen schweiz', 'cola cao energy', 'cola cao original', 'cola cao rewe', 'cola cao noir']
2. 普通循环遍历
如果需要更直观的逻辑,可使用for循环逐个提取:
suggestions = [] for item in response_data['toplevel']['CompleteSuggestion']: suggestions.append(item['suggestion']['@data']) print(suggestions)
3. 带异常处理的稳健版本
如果担心数据结构可能存在缺失键的情况,用get()方法避免报错:
suggestions = [] # 逐层获取,不存在则返回空字典/空列表 for item in response_data.get('toplevel', {}).get('CompleteSuggestion', []): data = item.get('suggestion', {}).get('@data') if data: suggestions.append(data) print(suggestions)
内容的提问来源于stack exchange,提问作者Philipp Schmid
相关产品推荐
相关产品推荐

