在python中包含引号时的正则表达式

在python中包含引号时的正则表达式,python,regex,Python,Regex,我有下面这行代码,我直接从html页面上刮下。我想处理它以从中提取信息: var quoteDataObj = [{"symbol":".DJIA","symbolType":"symbol","code":0,"name":"Dow Jones Industrial Average","shortName":"DJIA","last":"15794.08","exchange":"Dow Jones Global Indexes","source":"Exchange","open":"156

我有下面这行代码,我直接从html页面上刮下。我想处理它以从中提取信息:

var quoteDataObj = [{"symbol":".DJIA","symbolType":"symbol","code":0,"name":"Dow Jones Industrial Average","shortName":"DJIA","last":"15794.08","exchange":"Dow Jones Global Indexes","source":"Exchange","open":"15630.64","high":"15798.51","low":"15625.53","change":"165.55","currencyCode":"USD","timeZone":"EST","provider":"CNBC Quote Cache","altSymbol":".DJIA","curmktstatus":"REG_MKT","realTime":"true","assetType":"INDEX","noStreaming":"true","encodedSymbol":".DJIA"}]
我正在使用python处理保存到变量行中的字符串。我正试图写一个正则表达式

"low":"15625.53"
然而,我不知道数字是多少,所以我不能只是搜索那个。我尝试了以下方法,但没有成功:

last = re.search(r".*last\":.*\,", line)
谢谢

r'low:.*?应该适合您

>>> re.search(r'"low":".*?"', text).group()
'"low":"15625.53"'
然后你就在一个列表中有了一个常规的dict


虽然有99%的可能性存在一个实际的API,您可以在其中提交查询并获取上述json响应,而无需刮取网页并进行janky解析。

另一种方法是剥离变量。。。将字符串作为JSON对象进行前缀和处理:

>>> import json
>>> data = 'var quoteDataObj = [{"symbol":".DJIA","symbolType":"symbol","code":0,"name":"Dow Jones Industrial Average","shortName":"DJIA","last":"15794.08","exchange":"Dow Jones Global Indexes","source":"Exchange","open":"15630.64","high":"15798.51","low":"15625.53","change":"165.55","currencyCode":"USD","timeZone":"EST","provider":"CNBC Quote Cache","altSymbol":".DJIA","curmktstatus":"REG_MKT","realTime":"true","assetType":"INDEX","noStreaming":"true","encodedSymbol":".DJIA"}]'
>>> json.loads(data[data.find('['):])
[{u'altSymbol': u'.DJIA', u'code': 0, u'last': u'15794.08', u'name': u'Dow Jones Industrial Average', u'noStreaming': u'true', u'exchange': u'Dow Jones Global Indexes', u'assetType': u'INDEX', u'symbol': u'.DJIA', u'realTime': u'true', u'symbolType': u'symbol', u'high': u'15798.51', u'source': u'Exchange', u'encodedSymbol': u'.DJIA', u'low': u'15625.53', u'provider': u'CNBC Quote Cache', u'curmktstatus': u'REG_MKT', u'timeZone': u'EST', u'shortName': u'DJIA', u'open': u'15630.64', u'currencyCode': u'USD', u'change': u'165.55'}]
>>> json_str = data[data.find('['):]  # Take everything from the first [ in the string
>>> json.loads(json_str)[0]['low']
u'15625.53'

然后可以从数组中检索每个属性。

什么是直线?这个var关键字应该做什么?你确定你使用的是Python吗?去掉javascript,把剩下的放在json.loads中。请看我修改后的编辑。这也很好用,不幸的是,我找不到API,但是对于这么小的东西,它不管用哪种方式都可以用。谢谢你也给我指明了这个方向!
d_in_list[0]
Out[15]: 
{'altSymbol': '.DJIA',
 'assetType': 'INDEX',
 'change': '165.55',
 'code': 0,
 'curmktstatus': 'REG_MKT',
 'currencyCode': 'USD',
 'encodedSymbol': '.DJIA',
 'exchange': 'Dow Jones Global Indexes',
 'high': '15798.51',
 'last': '15794.08',
 'low': '15625.53',
 'name': 'Dow Jones Industrial Average',
 'noStreaming': 'true',
 'open': '15630.64',
 'provider': 'CNBC Quote Cache',
 'realTime': 'true',
 'shortName': 'DJIA',
 'source': 'Exchange',
 'symbol': '.DJIA',
 'symbolType': 'symbol',
 'timeZone': 'EST'}

d_in_list[0]['low']
Out[16]: '15625.53'
>>> import json
>>> data = 'var quoteDataObj = [{"symbol":".DJIA","symbolType":"symbol","code":0,"name":"Dow Jones Industrial Average","shortName":"DJIA","last":"15794.08","exchange":"Dow Jones Global Indexes","source":"Exchange","open":"15630.64","high":"15798.51","low":"15625.53","change":"165.55","currencyCode":"USD","timeZone":"EST","provider":"CNBC Quote Cache","altSymbol":".DJIA","curmktstatus":"REG_MKT","realTime":"true","assetType":"INDEX","noStreaming":"true","encodedSymbol":".DJIA"}]'
>>> json.loads(data[data.find('['):])
[{u'altSymbol': u'.DJIA', u'code': 0, u'last': u'15794.08', u'name': u'Dow Jones Industrial Average', u'noStreaming': u'true', u'exchange': u'Dow Jones Global Indexes', u'assetType': u'INDEX', u'symbol': u'.DJIA', u'realTime': u'true', u'symbolType': u'symbol', u'high': u'15798.51', u'source': u'Exchange', u'encodedSymbol': u'.DJIA', u'low': u'15625.53', u'provider': u'CNBC Quote Cache', u'curmktstatus': u'REG_MKT', u'timeZone': u'EST', u'shortName': u'DJIA', u'open': u'15630.64', u'currencyCode': u'USD', u'change': u'165.55'}]
>>> json_str = data[data.find('['):]  # Take everything from the first [ in the string
>>> json.loads(json_str)[0]['low']
u'15625.53'