RegEx - 某个匹配后的单词[重复]

Posted

技术标签:

【中文标题】RegEx - 某个匹配后的单词[重复]【英文标题】:RegEx - Word after a certain match [duplicate] 【发布时间】:2020-05-18 15:47:42 【问题描述】:

我有一个 RegEx 问题,我很难找到解决方案。我想处理以下类型的字符串列表:

genre = '["id": 28, "name": "Action", "id": 12, "name": "Adventure", "id": 14, "name": "Fantasy", "id": 878, "name": "Science Fiction"]'

这些是我正在使用的电影数据框的“类型”列。 我想返回一个仅包含流派名称的列表。我尝试过使用 re.match() 和 .search()。但我太喜欢 RegEx 初学者了。

你能帮我解决这个问题吗?

非常感谢您!

【问题讨论】:

【参考方案1】:

你问的是正则表达式,但是这样的事情呢?

list_ = eval('["id": 28, "name": "Action", "id": 12, "name": "Adventure", "id": 14, "name": "Fantasy", "id": 878, "name": "Science Fiction"]')
[genre["name"] for genre in list_]

这当然是假设您只有字符串。如果您有列表本身,则不需要使用eval 的解决方法。此外,如果您的数据来自不受信任的来源,请注意安全问题。

【讨论】:

感谢您的回复 :D 我不熟悉这种方法。问题是这个字符串在数据框的一列上重复。这不只是一个,我想收到一组电影的不同类型。非常非常感谢。 您应该发布您的数据可用的确切方式。 你是对的,对不起。我是这里的新手。【参考方案2】:

这个"id": 12, "name": "Adventure"是键值对,整个表达式是一个字典列表,见Python list of dictionaries search,所以Myke的回答不错,也见How to convert a string containing a list of dict into Python object?

【讨论】:

这是完美而简单的。感谢您和 myke 的帮助。 :D

以上是关于RegEx - 某个匹配后的单词[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java如何在正则表达式中匹配重复单词?

正则表达式 - 匹配整个字符串,除非 [重复]

Regex.Matches 找不到匹配项 [重复]

正则表达式匹配特定单词[重复]

正则表达式 - 匹配任何单词但忽略特定单词[重复]

在bash中匹配单词后的一行中打印特定字符串[重复]