我正在为Slack创建一个机器人,它需要能够从一串看起来像这样的数据中提取消息:
[{'text': 'This is my legit "test" \'message\' with "lots" of \'quotation marks\'', 'type': 'message', 'user': '<userID>', 'channel': '<channelID>, 'ts': '1450501889.000074', 'team': '<teamID'}]
我现在的正则表达式是:
re.search(r''''text': (["'])(.*?)\1''', channelstatus)
如何让它仅输出以下内容?
This is my legit "test" 'message' with "lots" of 'quotation marks'
答案 0 :(得分:2)
不需要正则表达式 - ast.literal_eval()
可以处理:
>>> from ast import literal_eval
>>>
>>> s = r'''[{'text': 'This is my legit "test" \'message\' with "lots" of \'quotation marks\'', 'type': 'message', 'user': '<userID>', 'channel': '<channelID>', 'ts': '1450501889.000074', 'team': '<teamID'}]'''
>>> print(literal_eval(s)[0]["text"])
This is my legit "test" 'message' with "lots" of 'quotation marks'
假设<channelID>
之后的报价遗漏了。