【发布时间】:2017-11-01 15:51:34
【问题描述】:
我有一系列格式错误的 JSON 数据,我需要使用 Regex 从中获取我需要的数据,然后我需要再次使用 regex 来删除数据的特定方面,即主要类别,在下面的例子是“游戏”。
第 1 部分有效,第二部分无效。
我对 Python 的经验有限,几乎没有使用 Regex 的经验。
最终输出:游戏
我收到了错误:
ValueError: 模式不包含捕获组
该系列数据包含如下格式的信息:
{"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)
我真的很感谢我在哪里出错的一些帮助......如果你认为我的解决方案作为一个整体,请告诉我:)
【问题讨论】:
-
为什么说这是格式错误的 JSON 数据?对我来说它看起来非常好。
-
您期望的输出是什么?
-
一方面,我建议使用原始字符串(在字符串前面添加
r,例如r'^[^/]+(?=/)')以避免需要转义特殊字符。我只是发现在我的正则表达式中添加大量转义字符会更容易搞砸。 -
Split 为您提供项目列表,例如['games', 'playing_cards'],在 [0] 处的索引为您提供第一项
-
@TomSitter 使用 ksdata.cat_slug_raw.str.split('/').str[0] 而不是 ksdata.cat_slug_raw.str.split('/')[0] 看起来有效。