【问题标题】:Getting string output embedded with \n characters获取嵌入 \n 字符的字符串输出
【发布时间】:2019-05-15 12:01:04
【问题描述】:

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

['1 汤匙\n植物油或椰子油\n1 汤匙\n新鲜生姜去皮切碎(1 英寸)\n2 瓣\n大蒜,切碎\n3 汤匙\n纯素泰式红咖喱酱,例如 Thai Kitchen \n2\n中等红薯(总共约 1 磅),去皮并切成 1/2 英寸的方块\n1(15 盎司)罐头\鹰嘴豆,沥干并冲洗干净\n1(13 到 14 盎司)罐头\n满- 高脂椰奶\n1/2 杯\n水\n1 茶匙\n粗盐\n1/4 茶匙\n现磨黑胡椒\n1(5 盎司)袋\n小菠菜(约 5 杯装)\n用 1 个中等酸橙榨汁(约 2 汤匙)\n米饭,供食用(可选)']

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

因此,您可以理解各个元素由 \n 分隔,并且各个元素也包含 \n。所以我很困惑,如何制作一个没有 \n 的单个成分项目的列表,比如:

['1 汤匙蔬菜或椰子油,1 汤匙去皮切碎的新鲜生姜(1 英寸),2 瓣大蒜,切碎,3 汤匙纯素泰式红咖喱酱,例如 Thai Kitchen,1 份的果汁中等酸橙(约 2 汤匙),米饭,供食用(可选)']

对于您可以看到的列表,没有特定的模式,例如如果我们可以抓住 \n 只是在任何整数之前,因为 \n 在熟米饭之前存在,用于服务(可选)。 如果我们替换所有的 \n 那么所有出现的地方都将被替换。我需要清除单个成分内部出现的 \n 事件,并且两种成分之间的 \n 分隔符也需要替换为 ,正如我在上面显示的预期 o/p 一样。

实际输出:

['1 汤匙\n植物油或椰子油\n1 汤匙\n新鲜生姜去皮切碎(1 英寸)\n2 瓣\n大蒜,切碎\n3 汤匙\n纯素泰式红咖喱酱,例如 Thai Kitchen \n2\n中等红薯(总共约 1 磅),去皮并切成 1/2 英寸的方块\n1(15 盎司)罐头\鹰嘴豆,沥干并冲洗干净\n1(13 到 14 盎司)罐头\n满- 高脂椰奶\n1/2 杯\n水\n1 茶匙\n粗盐\n1/4 茶匙\n现磨黑胡椒\n1(5 盎司)袋\n小菠菜(约 5 杯装)\n用 1 个中等酸橙榨汁(约 2 汤匙)\n米饭,供食用(可选)']

预期 o/p:

['1 汤匙蔬菜或椰子油,1 汤匙去皮切碎的新鲜生姜(1 英寸),2 瓣大蒜,切碎,3 汤匙纯素泰式红咖喱酱,例如 Thai Kitchen,1 份的果汁中等酸橙(约 2 汤匙),米饭,供食用(可选)']

【问题讨论】:

  • 网址是什么?你能分享你的代码吗?

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


【解决方案1】:

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

我在字符串中找到了 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 汤匙纯素泰国红咖喱酱,例如 作为 Thai Kitchen,2 个中等大小的红薯(总共约 1 磅),去皮并切成 1/2 英寸的立方体,1 罐(15 盎司)鹰嘴豆,沥干并冲洗干净,1 罐(13 至 14 盎司)装满-F 在椰奶、1/2 杯水、1 茶匙粗盐、1/4 茶匙现磨黑胡椒粉、1 袋(5 盎司)小菠菜(约 5 杯装)、1 份中等酸橙汁(约 2 汤匙) , 煮熟的米饭,供食用(可选)']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多