Python - 从列表中提取元素

时间:2016-04-24 22:14:48

标签: python list

我有不同的产品标题,我想从中提取产品数量,例如:

title = "Prażynki Roasty Ribs Lorenz, 45 g BBQ Hot&Spicy"

title = "Precelki Chrupkie Paluszki słone ; 49 + Chrupiące kulki gratis  Lajkonik, 130-200 g"

我可以通过title.split("")将其转换为列表。什么是提取金额的简单方法(即" 45 g"在第一个例子中," 130-200 g"在第二个例子中)并立即将其从标题中删除?我的意思是一种方法足够灵活,能够处理位于标题不同位置的金额(中间一次,最后一次等)。

结果如下:

name = "Prażynki Roasty Ribs Lorenz, BBQ Hot&Spicy"
amount = "45 g"

name = "Precelki Chrupkie Paluszki słone ; 49 + Chrupiące kulki gratis  Lajkonik"
amount = "130-200 g"

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

re.search(r"\b(\d+(?:\-\d+)?) g\b", title)

答案 1 :(得分:0)

您可以找到'克'单位的索引,然后使用它。紧接在单元之前的单词是金额的一部分(忽略错误检查,如果输入字符串中没有g,或者如果它是输入字符串中的第一个单词,您应该决定该怎么做,或者如果有多个g)。

def f(s):
    words = s.split()
    unitIdx = words.index('g')
    name = words[:unitIdx - 1] + words[unitIdx + 1:]
    amount = words[unitIdx - 1] + ' ' + words[unitIdx]
    return ' '.join(name), amount

# Prints ('Prazynki Roasty Ribs Lorenz, BBQ Hot&Spicy', '45 g')
print f("Prazynki Roasty Ribs Lorenz, 45 g BBQ Hot&Spicy")

# Prints ('Precelki Chrupkie Paluszki stone ; 49 + Chrupiqce kulki gratis Lajkonik,', '130-200 g')
print f("Precelki Chrupkie Paluszki stone ; 49 + Chrupiqce kulki gratis Lajkonik, 130-200 g")