在python中的方括号和大括号中提取字符串部分的最佳方法

时间:2018-11-09 13:54:14

标签: python regex string

我有一个包含行的文件,该行具有以下字符串:

{“ 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)

什么是正确的方法,从计算时间的角度来看会更好?

1 个答案:

答案 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