我有一个包含行的文件,该行具有以下字符串:
{“ product_specification” => [{“ key” =>“宠物类型”,“ value” =>“狗”}]}
我需要提取{“ key” =>“宠物类型”,“值” =>“狗”}。
鉴于字符串中存在大括号,方括号和括号,提取此内容的最佳方法是什么? 当我尝试执行以下操作时:
row = re.search(r'{"product_specification"=>[([^]}]+)', row).group(1)
我得到一个错误:
unbalanced parenthesis at position 34
如果我愿意
str.replace('{"product_specification"=>[', '')
我得到:
replace() takes at least 2 arguments (1 given)
什么是正确的方法,从计算时间的角度来看会更好?
答案 0 :(得分:0)
您应该发布更多示例,但是对于您发布的行,此正则表达式有效:
>>> a = '{"product_specification"=>[{"key"=>"Pet Type", "value"=>"Dog"}]}'
>>> import re
>>> re.findall("{[^{}]*?}", a)
['{"key"=>"Pet Type", "value"=>"Dog"}']
如果需要第一个元素,则可以使用(例如,在返回该元素的函数中):
try:
return re.findall("{[^{}]*?}", a)[0]
except IndexError:
return None