2015-12-19 46 views
1

我創建了一個鬆弛機器人,它需要能夠從數據的字符串,看起來像這樣提取消息:Python的正則表達式:不能提取信息包含轉義引號

[{'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

爲什麼不使用JSON解析器? – Jerry101

+0

請參閱https://regex101.com/r/sY8eR9/1 –

回答

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>由事故發生後失蹤的報價。

相關問題