获取嵌入\ n字符的字符串输出

时间:2019-05-15 12:01:05

标签: python-3.x selenium web-scraping beautifulsoup

在抓取网站数据时,我的输出低于o / p:

['1大汤匙\植物油或椰子油\ n1大汤匙\ n去皮和切碎的新鲜生姜(从1英寸一块开始)\ n2丁香\大蒜,切碎的\ n3大汤匙\ n泰国红咖喱酱,例如Thai Kitchen \ n2 \钕地瓜(总计约1磅),去皮切成1/2英寸的立方体\ n1(15盎司)罐头\鹰嘴豆,沥干并冲洗\ n1(13到14盎司)罐头\ nfull -脂肪椰奶\ n1 / 2杯\ n水\ n1茶匙\ nkosher盐\ n1 / 4茶匙\ n新磨碎的黑胡椒\ n1(5盎司)袋\ n婴儿菠菜(约5装杯装)\ n从1个中等石灰中榨汁(约2汤匙)\ n煮熟的米饭,用于食用(可选)']

第一个元素是1大汤匙\植物油或椰子油,第二个元素是 1汤匙\去皮切碎的新鲜生姜(1英寸一块)

因此,您可以理解各个元素之间用\ n分隔,并且各个元素也包含\ n。所以我很困惑,如何在没有\ n的情况下列出单个成分的列表,例如:

['1汤匙蔬菜或椰子油,1汤匙去皮的鲜姜切碎(从1英寸切块中切碎),2瓣大蒜,切碎的3汤匙纯素食泰国红咖喱酱,例如Thai Kitchen,果汁从1开始中度石灰(约2汤匙),煮熟的米饭,用于食用(可选)']

对于列表,您可以看到没有类似的特定模式,如果我们可以抓住\ n只是在任何整数之前,因为\ n在煮米饭之前就存在,则可以食用(可选)。 如果我们替换所有\ n,那么所有出现的事件都会被替换。我需要清除单个成分内部的\ n出现,并且两个成分之间的\ n分隔符也需要替换为,因为我已经在上面显示了预期的o / p。

实际o / p:

['1大汤匙\植物油或椰子油\ n1大汤匙\ n去皮和切碎的新鲜生姜(从1英寸一块开始)\ n2丁香\大蒜,切碎的\ n3大汤匙\ n泰国红咖喱酱,例如Thai Kitchen \ n2 \钕地瓜(总计约1磅),去皮切成1/2英寸的立方体\ n1(15盎司)罐头\鹰嘴豆,沥干并冲洗\ n1(13到14盎司)罐头\ nfull -脂肪椰奶\ n1 / 2杯\ n水\ n1茶匙\ nkosher盐\ n1 / 4茶匙\ n新磨碎的黑胡椒\ n1(5盎司)袋\ n婴儿菠菜(约5装杯装)\ n从1个中等石灰中榨汁(约2汤匙)\ n煮熟的米饭,用于食用(可选)']

预期o / p:

['1汤匙蔬菜或椰子油,1汤匙去皮的鲜姜切碎(从1英寸切块中切碎),2瓣大蒜,切碎的3汤匙纯素食泰国红咖喱酱,例如Thai Kitchen,果汁从1开始中度石灰(约2汤匙),煮熟的米饭,用于食用(可选)']

1 个答案:

答案 0 :(得分:0)

我得到了一些接近您想要的东西,希望对您有所帮助:

我在字符串中发现了3个单独的场合要替换:

当换行符带有数字时,请替换为", (number)"

当换行符带有大写字母时,请替换为", (letter)"

当换行符不适合这两个类别时,请替换为" "

import re

text = "['1 tablespoon\nvegetable or coconut oil\n1 tablespoon\npeeled and minced fresh ginger (from a 1-inch piece)\n2 cloves\ngarlic, minced\n3 tablespoons\nvegan Thai red curry paste, such as Thai Kitchen\n2\nmedium sweet potatoes (about 1 pound total), peeled and cut into 1/2-inch cubes\n1 (15-ounce) can\nchickpeas, drained and rinsed\n1 (13- to 14-ounce) can\nfull-fat coconut milk\n1/2 cup\nwater\n1 teaspoon\nkosher salt\n1/4 teaspoon\nfreshly ground black pepper\n1 (5-ounce) bag\nbaby spinach (about 5 packed cups)\nJuice from 1 medium lime (about 2 tablespoons)\nCooked rice, for serving (optional)']"

text = re.sub("\\n(\d)",", \g<1>", text)
text = re.sub("\\n([A-Z])", ", \g<1>", text)
text = re.sub("\\n"," ", text)

print (text)

输出:['1汤匙蔬菜或椰子油,1汤匙去皮的鲜姜切碎(从1英寸一块开始),2瓣大蒜,切碎的,3汤匙的素食泰式红咖喱酱,例如  作为泰国厨房,将2个中等大小的红薯(总计约1磅)切成小块,切成1/2英寸的方块,将1颗(15盎司)鹰嘴豆罐头,沥干并冲洗,将1颗(13到14盎司)罐头装满-F 椰奶,1/2杯水,1茶匙犹太洁食盐,1/4茶匙现磨黑胡椒粉,1(5盎司)袋装菠菜(约5装杯装),1种中等酸橙汁(约2大汤匙) ,米饭,供食用(可选)']