如何从含URL的字符串中提取Python字典(支持嵌套)
嘿,我来帮你搞定这个提取字典的问题!
你说用split()方法无效,大概率是因为如果URL里包含空格(或者字典内部有空格),split会把内容拆得七零八落,没法准确分离出URL和字典部分。更可靠的方法是利用字典列表被方括号[]包裹这个特征,直接定位到方括号的位置来提取:
步骤1:提取字典列表的字符串部分
我们可以用字符串的find()方法找到第一个[的索引,然后从这个位置开始截取到字符串末尾,就能拿到完整的字典列表字符串:
data = "https:google.com [{'Foo': u'1002803', 'Bar': 'value'},{'Foo': u'1002803', 'Bar': 'value'}]" # 定位第一个'['的起始位置 start_index = data.find('[') # 截取从start_index到结尾的部分,得到字典列表字符串 dict_list_str = data[start_index:]
步骤2:将字符串转换为Python可操作的对象
因为你的字符串里包含Python 2风格的u'...' Unicode前缀,用json.loads()会报错,推荐用ast.literal_eval()来解析——它能安全处理Python的字面量结构,包括嵌套字典:
import ast # 解析为Python列表(里面是字典) dict_list = ast.literal_eval(dict_list_str) # 测试一下,打印第一个字典的Foo值 print(dict_list[0]['Foo']) # 输出: 1002803
这种方法不管URL里有没有空格、字典有没有嵌套结构,只要字典列表是从第一个[开始到最后一个]结束,都能准确提取出来,比split()靠谱多啦!
内容的提问来源于stack exchange,提问作者SIM777
相关产品推荐
相关产品推荐

