有一个字符串:
output='[{ "id":"b678792277461" ,"Responses":{"SUCCESS":{"sh xyz":"sh xyz\n Name Age Height Weight\n Ana \u003c15 \u003e 163 47\n 43\n DEB \u003c23 \u003e 155 \n Grey \u003c53 \u003e 143 54\n 63\n Sch#"},"FAILURE":{},"BLACKLISTED":{}}}]'
这只是一个例子,但我有更长的输出,这是来自api调用的响应。我想提取所有名称(ana, dab, grey)并放入一个单独的列表。我该怎么做?
json_data = json.loads(output)
json_data = [{'id': 'b678792277461', 'Responses': {'SUCCESS': {'sh xyz': 'sh xyzn Name Age Height Weightn Ana <15 > 163 47n 43n DEB <23 > 155 n Grey <53 > 143 54n 63n Sch#'}, 'FAILURE': {}, 'BLACKLISTED': {}}}]
1)我试过了 re.findall('\n(.+)\u',output)
但这不起作用,因为它说“不完整的序列u”
2)
start = output.find('\n')
end = output.find('\u', start)
x=output[start:end]
但我无法弄清楚如何在循环中运行这段代码来提取名称
u对象不是一个字母,它不能匹配。它是Unicode序列的一部分。以下正则表达式有效,但它有点古怪。除了第一行之外,它会查找每行的开头,直到第一个空格。
output = json_data0'SUCCESS'
pattern = "ns*([a-z]+)s+"
result = re.findall(pattern, output, re.M | re.I)
模式说明:
从一个新行开始( n)
跳过所有空格,如果有的话( s *)
收集一个或多个字母([az] +)
至少跳过一个空格( s +)
不幸的是,"Name"也被认为是一个名字。如果您知道它始终存在于第一行中,请对结果列表进行切片:
result[1:]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。