正则表达式findall python

时间:2019-03-20 12:04:08

标签: python regex findall

我有这样的文字

  

{“ @ context”:“ http://schema.org”,“ @ type”:“ Recipe”,“ name”:“ Tartelette aux fraises et rhubarb'curd”,“ recipeCategory”:“ tarte aux fraises”, “ image”:“ https://assets.afcdn.com/recipe/20160527/8530_w1024h768c1cx1941cy2911.jpg”,“ datePublished”:“ 2012-10-10T08:48:00 + 02:00”,“ prepTime”:“ PT90M”,“ cookTime”:“ PT15M”,“ totalTime “:” PT105M“,” recipeYield“:” 4人“,” recipeIngredient“:[” 250克fraises“,” 150克法拉尼“,” 45克de beurre“,” 40克sucre“,” 1 oeuf”,“ 1 pinc \ u00e9e de sel”,“ 20 cl de rhubarbe(r \ u00e9cup \ u00e9r \ u00e9 de compote)”,“ 3 oeufs”,“ 75 g de sucre”,“ 1 cuill \ u00e8re” \ u00e0 soupe de ma \ u00efzena“],” recipeInstructions“:[{” @ type“:” HowToStep“,” text“:”倒入4 tartelettes(ou une grande tarte mais je pr \ u00e9f \ u00e8re les tartelettes,la p \ u00e2te sabl \ u00e9t \ u00e0tant难区分的\ u00e0 couper :))“},{” @ type“:” HowToStep“,” text“:” Pr \ u00e9parer la p \ u00e2te sabl \ u00e9e:“},{” @ type “:” HowToStep“,”文本“:” Couper le beurre en petits morceaux。“},{” @ type“:” HowToStep“,” text“:”蔬菜沙拉和面包的用法和样例\ u00e0 la ma在(您自己的机器人中)jusqu'\ u00e0以前的boule homog \ u00e8ne。 \\ r00a9server au frais au moins 1h pour pouvoir mieux l'\ u00e9taler。“},{” @ type“:” HowToStep“,” text“:” Pendant que la p \ u00e2te sabl \ u00e9es pose,pr \ u00e9parer le rhubarb'curd:“},{” @ type“:” HowToStep“,” text“:” M \ u00e9langu le sucre avec le jus de rhubarbe sur feu doux,jusqu \ u2019 \ u00e0 ce que su sucre soit fondu。 “},{” @ type“:” HowToStep“,” text“:”一部分,dans un bol(qui pourra aller au bain marie dans l'\ u00e9tape suivante),battre la ma \ u00efzena avec 1 oeuf。 Lorsqu \ u2019elle est bien dissoute,incorporer les 2 autres oeufs,toujours en fouettant。“},{” @ type“:” HowToStep“,” text“:” Incorporer ensuite le jus de rhubarbe chaud en fouettant bien,le m \ u00e9lange开始\ u00e9paissir。占位符,放置和保存位置信息。“},{” @ type“:” HowToStep“,” text“:” Une fois qu \ u2019“ \ u00e9paisse,transf \ u00e9rer dans un autre bol ou Saladier pour la refroidirir。 “},{” @ type“:” HowToStep“,” text“:”吊坠装饰符号,提示“。分别设置4个Moules tartelette(或dan und grand moule \ u00e0 tarte)。 Puis enfourner entre 10 et 15 min(第四次投票)\ u00e0 200 \ u00b0C(恒温器6-7)。“},{” @ type“:” HowToStep“,” text“:” Laisser refroidir les fonds une bonne demi heure。“},{” @ type“:” HowToStep“,” text“:” Monter les tartelettes:“},{” @ type“:” HowToStep“,” text“:”-大黄curd dans les fonds de tarte“},{” @ type“:” HowToStep“,” text“:”-紫菜等。“,{” @ type“:” HowToStep“,” text“:”- les couper en 2 et les disposer sur le rhubarb'curd。“},{” @ type“:” HowToStep“,” text“:”-serv a au frais avant de servir“}],

在字段RecipeInstructions中,我需要将所有内容写在“ text”之后::。我从没使用过正则表达式,我有点迷茫。

1 个答案:

答案 0 :(得分:0)

这看起来像一个json对象,但没有[]使其成为实际列表。您应该能够将其转换为Python本机字典列表并进行导航:

import json

recipe = json.loads('[' + your_text + ']')
steps = [obj["text"] for obj in recipe if obj.get("@type") == "HowToStep"] 

让我担心的是,除非您将文本截断以发布到此处,否则它可能不是格式正确的json。在这种情况下,您不能使用上述代码,而应使用如下正则表达式:

import re

regex = r"\"text\":\"([^\"]*)\""
matches = re.findall(regex, your_text) 

“匹配项”现在应该是所有文本元素的列表。

对这种正则表达式的工作方式感到好奇吗? Here's a simulator