Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何最好地从Python中的列表/字符串类型对象中提取模式_Python_Regex_Google Maps - Fatal编程技术网

如何最好地从Python中的列表/字符串类型对象中提取模式

如何最好地从Python中的列表/字符串类型对象中提取模式,python,regex,google-maps,Python,Regex,Google Maps,我正在玩谷歌地图方向API。API返回一个长度为1的长列表,如下所示。我想从中提取旅行持续时间,它出现在字符串“duration\u in\u traffic”后面,如下所示: u'duration_in_traffic':{u'text':u'4小时3分钟',u'value':14601} 正则表达式在这里似乎不起作用,因为API返回长度为1的列表(几个输出参数用逗号分隔,但被嵌套的括号包围,因此无法输出“duration”行) 如何将此列表转换为字符串以便执行正则表达式,或者更好地将其拆分为

我正在玩谷歌地图方向API。API返回一个长度为1的长列表,如下所示。我想从中提取旅行持续时间,它出现在字符串“duration\u in\u traffic”后面,如下所示:

u'duration_in_traffic':{u'text':u'4小时3分钟',u'value':14601}

正则表达式在这里似乎不起作用,因为API返回长度为1的列表(几个输出参数用逗号分隔,但被嵌套的括号包围,因此无法输出“duration”行)

如何将此列表转换为字符串以便执行正则表达式,或者更好地将其拆分为多行以便选择持续时间行

下面是directions API输出的第一块,以防有帮助:

[{u'概览\ u多段线]:{u'点:u'ounwFrkubM\u Xp
@ka@i@igAwHsxAkN}P|A_aAoh@k阿拉伯联合酋长国
B{q@iAe@qz@yh@ceAwq@sv@gaAoe@uf@ol@wA{OcQ|Fo
AmJmg@akAoVo_B_a@aOqQcRw_A~Ms
@|\q
Cp^qxBq@kVud@[英]sg@iVko@cWi^}]mg@jBob@}
@aw@esBsFie@}RcWoRw_@{@qj@o
@gh@yJc_@ge@wg@q_Au}@gYaYet@kSet@_a@{Oet@hEya@e\\yvAiHgVw^qSakAuh@auAn^wh@c]mp@kD}z@m[m~@_sAgMc}Avk@gy@eNu{Aab@wcAgMu{AkEihB_@{rB{t@sfDnMkgEek@iuBeq@gpAid@k} Am]eoBg
{sA}wAa{CoKmaAzBcaBaq@k|DwQuaAm ^ m{}@amA{UqbAgYw}Ak
@q\\ak@em@_hAmy@mm@}_ACSWZAHAAWAIXUWCQG}CvCstB{PixCgd@yeC}ImlBmg@saAurA}杰德贝克|AwgAct@alAsRm^_p@sk@wzCymCukDy}@yiAeLyx@ma@o~Aca@wvAcL_c@{l@}o@a\\qg@ug@y_BweAeiB}p@uq@yr@k[qtCar@wjAam@o{CacBg_Ayp@kn@q~@o}@ovAezBsnCcp@sHi\\mSwdA}jBqwAi|@uq@gmAeuAigAi{Bgy@ofCoyAa
Aqd@}p@qj@gr@{a@sbA{Su|C{sB}nAqf@kzAvYio@nPm[vWub@jp@kXbKwwAsl@sw@ccBc\g_Agt@yiFmDcmAuU{q@_hBimAik@kh@qK}k@ar@wxCqW{w@qi@my@g[yhB}\cmBsu@wgBqqAexB{Jur@dBuqBoFyi@nMa}@kSovAib{cAyjCeqH_z@a
Cwl@yy@sWu |@mpBsaB{vAepDmr@wcCy^{q@odAku@oaDiuBueDqqBu
ByyBimAqlAomBozA{cAgy@{rBkbAorCkx@_m@yr@il@wp@s{@seEsx@ccCw^}pCwNigCuw@i
CccAaxC{d@u}BkbA{gG}n@}tBwSy_BgUeeDgSexAcb@maAof@_nBaH}mCuB}kB{TayAUkiE_HabBjJi~B}Ky|@iy@w~BuxC_hD}_AooDwn@m}Ds
@}tBs^su@kj@q_AcQe{@cGe~A_n@khB}e@mcDtPogC|DgiCe^{nAeP}y@u[af@y}@_gCcZmpFqFwsAwUuu@qSatBkH}oAiu@w}FO_lGBk{AbOs^`b@gbAjG_{D|DewBo|eOg\m|XzML~QpJfEcBxOwAl'},u'warning':[],u'bounds':{u'lat':42.3607971,u'lng':-71.0504669},u'southern':{u'lat 40.7127243,u'lng':-74.0118677999999},u'waypoint:[],u'summary':u'CT-15 N和I-90 E',u's'u's,u'xau'scape':u's,u's,u'scape''''''''s'.'s'''s''s'.'s'''s'.'s'''.'s'''s'.'s'''s'.'{u'text':u'216 mi',u'value':347410},u'end_address':u'Boston,MA,USA',u'via_waypoint':[],u'duration_in_traffic':{u'text':u'4小时3分钟',u'value':14601},u'start_address':u'New York,NY,USA',u'start_'u位置:{u'lat 40.7127243,u'lng':-74.0065046,u'steps':[{u'html\'u指令:'u'在史蒂夫·弗兰德斯广场向西北方向驶向BroadwayRestricted usage road',u'distance':{u'text':u'236 ft',u'value':72},u'travel\'mode':u'DRIVING',u'start\'u location':{u'lat':40.7127243,u'lng':-74.0065046},u'polyline':{u'points':u'ounwFrkubMINABCDMZSd@Ur@'},u'duration':{u'text':u'1min',u'value':9},u'end_location':{u'lat':40.7130849,u'lng':-74.0072187999999}

u'lng':-71.0598124999999}]}]

试试这个:

import json
l = [ { 'key': 'value' }, { 'key' : 'othervalue' } ]
print(json.dumps(l))
您应该看到如下内容:

[{“键”:“值”},{“键”:“其他值”}]

然后您可以尝试以下方法:

string_data = """[{"key": "value"}, {"key": "othervalue"}]"""
structure = json.loads(string_data)
print(structure[0])
print(structure[1])

您显示的结构似乎是一个JSON编码的数据结构,由
list
s和
dict
iaories组成。您可以使用
JSON.loads()
加载字符串(从JSON转换为本机数据结构)。然后通过打印转储它,并计算出索引(如[0])和键(如['duration in\u traffic'])的顺序您需要获取所需的数据。

此代码将提取您要查找的代码段:

这是上面演示中使用的RexEx模式:
u'duration\u在流量中。*?}


尝试一下@this

谢谢,这看起来是一个很好的开始。我正在尝试找出向json.loads命令提供什么。API返回了我上面发布的列表,但是当我执行structure=json.loads(API\u returned\u listname)时,我得到了一个类型错误:“TypeError:预期的字符串或缓冲区”。我需要先将该列表转换为字符串吗?可能JSON已经被提取。当您执行
print(len(api\u returned\u listname))
时会发生什么情况?print(len(directions\u result))生成1所以它已经是一个列表-您不需要
JSON。加载它。只需设置
d=directions\u result[0]
你显然有一个命令。试着打印(排序(d.keys())
看看它是否对你有用。谢谢,你是对的。但是我不确定这是否有用:打印(排序(d.keys())产生:[u'bounds',u'copyrights',u'legs',u'overview\u polyline',u'summary',u'warning',u'waypoint u order']对于python来说,这是一个只有一个元素的列表。我不知道如何迭代它。你能澄清一下你的意思吗?