正则表达式findall python

2024-04-29 15:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的文字

{"@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 personnes","recipeIngredient":["250 g de fraises","150 g de farine","45 g de beurre","40 g de sucre","1 oeuf","1 pinc\u00e9e de sel","20 cl de rhubarbe (r\u00e9cup\u00e9r\u00e9 de ma conception de compote)","3 oeufs","75 g de sucre","1 cuill\u00e8re \u00e0 soupe de ma\u00efzena"],"recipeInstructions":[{"@type":"HowToStep","text":"Pour 4 tartelettes ( ou une grande tarte mais je pr\u00e9f\u00e8re les tartelettes, la p\u00e2te sabl\u00e9e \u00e9tant difficile \u00e0 couper :)) "},{"@type":"HowToStep","text":"Pr\u00e9parer la p\u00e2te sabl\u00e9e : "},{"@type":"HowToStep","text":"Couper le beurre en petits morceaux."},{"@type":"HowToStep","text":"Mettre tous les ingr\u00e9dients dans un saladier et tout m\u00e9langer \u00e0 la main ( ou au robot) jusqu'\u00e0 former une boule homog\u00e8ne. La r\u00e9server 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\u00e9langer le sucre avec le jus de rhubarbe sur feu doux, jusqu\u2019\u00e0 ce que le sucre soit fondu. "},{"@type":"HowToStep","text":"A part, 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 commence \u00e0 \u00e9paissir. Placer le bol au bain marie et faire \u00e9paissir sur feu doux tout en fouettant tr\u00e8s r\u00e9guli\u00e8rement."},{"@type":"HowToStep","text":"Une fois qu\u2019elle est bien \u00e9paisse, transf\u00e9rer dans un autre bol ou saladier pour la refroidir. "},{"@type":"HowToStep","text":"Pendant que le curd refroidit, cuire la p\u00e2te sabl\u00e9e \u00e0 blanc. Etaler la p\u00e2te sabl\u00e9e et la r\u00e9partir dans les 4 moules \u00e0 tartelette (ou dans un grand moule \u00e0 tarte). Puis enfourner entre 10 et 15 min (en fonction de votre four) \u00e0 200\u00b0C (thermostat 6-7)."},{"@type":"HowToStep","text":"Laisser refroidir les fonds une bonne demi heure."},{"@type":"HowToStep","text":"Monter les tartelettes : "},{"@type":"HowToStep","text":"- mettre une couche de rhubarb' curd dans les fonds de tarte"},{"@type":"HowToStep","text":"- laver et \u00e9queuter les fraises"},{"@type":"HowToStep","text":"- les couper en 2 et les disposer sur le rhubarb'curd."},{"@type":"HowToStep","text":"- conserver au frais avant de servir"}],

在RecipeInstructions字段中,我需要将所有内容都写在“text”之后:。我从没用过正则表达式,我有点迷路了。你知道吗


Tags: textletypedelaetenau
1条回答
网友
1楼 · 发布于 2024-04-29 15:38:50

这看起来像一个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) 

“matches”现在应该是所有文本元素的列表。你知道吗

好奇这个正则表达式是怎么工作的吗?Here's a simulator

相关问题 更多 >