正则表达式findall python

问题描述 投票:-5回答:1

我的文字看起来像那样

{ “@Context”: “http://schema.org” “@类型”: “配方”, “名称”: “挞草莓rhubarb'curd”, “recipeCategory” “草莓水果馅饼”, “图像”: “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克草莓的‘’150克面粉‘’45克黄油‘’40克糖“” 1个蛋“” 1捏\ u00e9e盐“ ,“20 cl大黄(从我的蜜饯设计中恢复)”,“3个鸡蛋”,“75克糖”,“1汤匙mahon”,“ recipeInstructions “:[{” @类型 “” HowToStep “” 文本 “:” 对于4个挞(或大馅饼不过我更喜欢\ u00e9f \ u00e8re馅饼,对\ u00e2te喷砂\ u00e9e \ u00e9tant难以\ u00e0切:)) “},{” @类型 “” HowToStep “” 文本 “:” 镨\ u00e9parer p \ u00e2te喷砂\ u00e9e: “},{” @类型 “” HowToStep “” 文本 “:”将黄油切成小块。“},{”@ Type“:”HowToStep“,”text“:”将所有配料放入碗中,将所有食物放入碗中。手(或机器人),直到它形成一个均匀的球。 r \ u00e9server凉至少1小时,以更好地将\ u00e9taler “},{” @人 “” HowToStep “” 文 “:”。虽然喷砂所述p \ u00e2te \ u00e9es姿势,PR \ u00e9parer的rhubarb'curd: “},{” @类型 “” HowToStep “” 文 “:” M \ u00e9langer糖大黄汁用小火,直到\ u2019 \ u00e0糖融化。 “},{” @类型“” HowToStep“”文‘:’在一个碗里一只手(这将去沐浴在\下面u00e9tape),打我的\ u00efzena用1个鸡蛋。当\ u2019elle溶解,加入剩余的2个鸡蛋,还在跳动“},{” @人“” HowToStep“”文‘:’再搭配热大黄汁,搅打好,男\ u00e9lange开始成长。在汤池地方碗,做\ u00e9paissir在发热量低,拂动TR \ u00e8s r \ u00e9guli \ u00e8rement “},{” @人 “” HowToStep “” 文 “:” 一旦\ u2019elle是厚,转移到另一个碗或碗冷却。 “},{”@ type“:”HowToStep“,”text“:”当凝乳冷却下来时,煮上喷砂的面团。将沙饼涂抹在4个馅饼模具中(或在一个大馅饼盘中)。烤10〜15分钟(取决于你的烤箱)\ u00e0 200 \ U00B0C(恒温6-7) “},{” @人 “” HowToStep “” 文 “:” 酷基金好半小时 “},{” @类型 “” HowToStep “” 文 “:” 组装挞: “},{” @类型 “” HowToStep “” 文 “:” - 把大黄层“。豆腐在馅饼皮 “},{” @类型 “” HowToStep “” 文 “:” - 洗和\ u00e9queuter草莓 “},{” @类型 “” HowToStep “” 文 “:” - 切成2,并安排他们在rhubarb'curd“},{” @类型“” HowToStep“”文‘:’ - 冷藏食用前“}]

在RecipeInstructions字段中,我需要在“text”之后写下所有内容:。我从来没有使用正则表达式而且我有点失落。

python regex findall
1个回答
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) 

'matches'现在应该是所有文本元素的列表。

好奇这个正则表达式是如何工作的? Here's a simulator

© www.soinside.com 2019 - 2024. All rights reserved.