正则表达式包含没有捕获组?

时间:2017-11-01 15:51:34

标签: python regex pandas

我得到了一系列格式错误的JSON数据,我需要使用Regex来获取我需要的数据,然后我需要再次使用regex来删除数据的特定方面,即主要类别,在下面的示例中,游戏'。

第1部分有效,第2部分没有。

我对Python的经验有限,而且没有使用Regex的经验。

最终输出:游戏

我收到错误:

  

ValueError:pattern不包含捕获组

这一系列数据包含如下格式的信息:

 {"urls":{"web":{"discover":"http://www.kickstarter.com/discover/categories/games/playing%20cards"}},"color":51627,"parent_id":12,"name":"Playing Cards","id":273,"position":4,"slug":"games/playing cards"}

我正在使用的Python调用是:

首先,我从JSON中删除了slug。

ksdata.cat_slug_raw = ksdata.category.str.extract('\"slug\"\:\"(.+?)\"', expand=False)

然后我删除/

之前的所有内容
ksdata.cat_slug = ksdata.cat_slug_raw.str.extract('^[^/]+(?=/)', expand=False)

我真的很感激我在哪里出错了...如果你认为我的解决方案整体sux请告诉我:)

2 个答案:

答案 0 :(得分:1)

您可以使用ast.literal_eval

s = '{"urls":{"web":{"discover":"http://www.kickstarter.com/discover/categories/games/playing%20cards"}},"color":51627,"parent_id":12,"name":"Playing Cards","id":273,"position":4,"slug":"games/playing cards"}'
import ast
final_data = ast.literal_eval(s)

输出:

{'name': 'Playing Cards', 'color': 51627, 'slug': 'games/playing cards', 'parent_id': 12, 'urls': {'web': {'discover': 'http://www.kickstarter.com/discover/categories/games/playing%20cards'}}, 'position': 4, 'id': 273}

答案 1 :(得分:1)

根据TomSitter的修改建议,我使用了

ksdata.cat_slug_raw.str.split('/').str[0]

这是解决问题的最简单方法。