python删除字符串中括号之间的内容

2024-06-09 10:38:46 发布

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

我正在研究(在python中)在括号之前获取字符串的方法。我解释说:

从字符串“xxxa(b)xxx”中,我需要查找字符串“b”,并获取在parentheis之前的内容,在本例中为“a”

我需要弄清楚左括号和右括号之间的区别,这里有更多的例子:


xxx a(b) xxx       ==> i need to return a
xxx a((c)b) xxx    ==> i need to return a
xxx a((c)(d)b) xxx ==> i need to return a

这是一个真实的案例,我有以下字符串: A=“低脂酸奶、糖、牛奶巧克力 (糖、全牛奶粉、可可脂、可可块、乳清粉(牛奶)、卵磷脂、调味品), 米粉、强化小麦粉(小麦粉、碳酸钙、铁、烟酸、硫胺)、大米淀粉、焦糖 (糖、水)、小麦淀粉、色素(焦糖)、盐、调味品、乳化剂(脂肪酸的单甘油三酯和双甘油三酯), 阿拉伯树胶、葡萄糖糖浆、碳酸钙、牛奶焦糖(葡萄糖果糖糖浆、甜炼乳(糖、牛奶)、水、, 浓缩柠檬汁、可可脂、香蕉:低脂酸奶(牛奶)、糖、全脂牛奶巧克力(6%)(糖、全脂牛奶粉、, 可可脂、可可块(牛奶)、乳化剂(大豆卵磷脂)、香蕉泥(2.5%)、变性玉米淀粉、, 盐、大麦麦芽、乳化剂(向日葵卵磷脂)、增稠剂(阿拉伯树胶)、葡萄糖糖浆、改性木薯淀粉、椰子油、, 酸度调节剂(柠檬酸)、调味品、浓缩柠檬汁、色素(β-胡萝卜素)、香草:低脂酸奶(牛奶), 糖、牛奶巧克力(8%)(糖、全牛奶粉、可可脂、可可块、乳清粉(牛奶)、卵磷脂、调味品), 白巧克力(3.5%)(糖、可可脂、全牛奶粉、乳清粉、调味品、乳化剂(大豆卵磷脂)), 米粉、小麦粉、变性玉米淀粉、小麦纤维、麦芽粉、盐、葡萄糖糖浆、阿拉伯树胶、增稠剂(果胶), 调味品、浓缩柠檬汁、调味品、颜色(β-胡萝卜素)、可可脂“

我要找绳子:“卵磷脂” 在这个例子中,得到括号之前应该是什么 -牛奶巧克力 -乳化剂 -乳化剂 -牛奶巧克力 -乳化剂

我已经为此工作了两天了,这让我抓狂

非常感谢你的帮助


Tags: to字符串returnneed括号xxx牛奶葡萄糖
2条回答

不确定这是否正确,但我有一个解决方案:

基于“(“您将它们划分为一个字典。唯一的问题是%(如()所示),所以现在,我已经删除了它们,如果可能,您可以使用其他括号

A="low fat yogurt, sugar, milk chocolate (sugar, whole cow's milk powder, cocoa butter, cocoa mass, whey powder (cow's milk), lecithin, flavoring), rice flour, fortified wheat flour (wheat flour, calcium carbonate, iron, niacin, thiamine), rice starch, caramel (sugar, water), wheat starch, color (caramel), salt, flavoring, emulsifier (mono and diglycerides of fatty acids), gum arabic, glucose syrup, calcium carbonate, milk caramel (glucose-fructose syrup, sweetened condensed milk (sugar, cow's milk), water), concentrated lemon juice, cocoa butter, banana: low fat yogurt (cow's milk), sugar, whole milk chocolate  (sugar, whole cow's milk powder, cocoa butter, cocoa mass, (cow's milk), emulsifier (soy lecithin)), banana puree , modified cornstarch, salt, barley malt, emulsifier (sunflower lecithin), thickener (gum arabic), glucose syrup, modified tapioca starch, coconut oil, acidity regulator (citric acid), flavorings, concentrated lemon juice, color (beta carotene), vanilla: low fat yogurt (cow's milk), sugar, milk chocolate  (sugar, whole cow's milk powder, cocoa butter, cocoa mass, whey powder (cow's milk), lecithin, flavoring), white chocolate  (sugar, cocoa butter, whole cow's milk powder, whey powder , flavoring, emulsifier (soy lecithin)), rice flour, wheat flour, modified cornstarch, wheat fiber, malted barley flour, salt, glucose syrup, gum arabic, thickener (pectin), flavorings, concentrated lemon juice, flavor, color (beta carotene), cocoa butter"
fin = []
num_left = 0
num_right = 0
temp = ""
dic_name = dict()
id_d = ""

for i in A:
    if (i=="("):
        num_left+=1
        if(num_left==1):
            id_d = temp
            temp = ""
            continue
    elif(i==")"):
       num_right+=1
        num_left-=1
        if(num_left==0):
            val = temp
            dic_name[id_d] = val
            temp= ""
        continue
    
    temp+=i

for key,value in dic_name.items():
    n = value.find("lecithin")
    if(n>0):
        fin.append(key.split(",")[-1])


print(fin)

输出:

[' milk chocolate ', ' whole milk chocolate  ', ' emulsifier ', ' milk chocolate  ', ' white chocolate  ']

另外,我认为您的答案应该是程序给出的输出,因为您需要外括号的值

也许这个

input = "low fat yogurt, sugar, milk chocolate (sugar, whole cow's milk powder, cocoa butter, cocoa mass, whey powder (cow's milk), lecithin, flavoring), rice flour, fortified wheat flour (wheat flour, calcium carbonate, iron, niacin, thiamine), rice starch, caramel (sugar, water), wheat starch, color (caramel), salt, flavoring, emulsifier (mono and diglycerides of fatty acids), gum arabic, glucose syrup, calcium carbonate, milk caramel (glucose-fructose syrup, sweetened condensed milk (sugar, cow's milk), water), concentrated lemon juice, cocoa butter, banana: low fat yogurt (cow's milk), sugar, whole milk chocolate (6%) (sugar, whole cow's milk powder, cocoa butter, cocoa mass, (cow's milk), emulsifier (soy lecithin)), banana puree (2.5%), modified cornstarch, salt, barley malt, emulsifier (sunflower lecithin), thickener (gum arabic), glucose syrup, modified tapioca starch, coconut oil, acidity regulator (citric acid), flavorings, concentrated lemon juice, color (beta carotene), vanilla: low fat yogurt (cow's milk), sugar, milk chocolate (8%) (sugar, whole cow's milk powder, cocoa butter, cocoa mass, whey powder (cow's milk), lecithin, flavoring), white chocolate (3.5%) (sugar, cocoa butter, whole cow's milk powder, whey powder , flavoring, emulsifier (soy lecithin)), rice flour, wheat flour, modified cornstarch, wheat fiber, malted barley flour, salt, glucose syrup, gum arabic, thickener (pectin), flavorings, concentrated lemon juice, flavor, color (beta carotene), cocoa butter"

# items are separated by comma
x = input.split(',')

# find indexes of lecithin
idx = [i for i,x in enumerate(b) if 'lecithin' in x]

output = []
for i in idx:
    # search for open/close parenthesis in the same item
    if b[i].count('(') >0 and b[i].count(')')>0:
        output.append(b[i].split('(')[0].strip())
    else:  # move backwards counting parenthesis
        p = ''.join(b[i:]).count(')') - ''.join(b[i:]).count('(')
        for j in reversed(range(i)):
            p += b[j].count(')') - b[j].count('(')
            if p == 0:
                break
        output.append(b[j].split('(')[0].strip())
    
print(output)
# ['milk chocolate', 'emulsifier', 'emulsifier', 'milk chocolate', 'emulsifier']

相关问题 更多 >