我有一个清单
ingredient = ['2 tablespoons butter',
'1 1/2 cups long-grain rice',
'1/2 cup chopped onion',
'1/2 cup chopped green bell pepper',
'1 clove garlic, minced']
我想从每个元素中提取必要的单词,使列表成为
['butter',
'long-grain rice',
'onion',
'green bell pepper',
'garlic']
有办法吗?
答案 0 :(得分:2)
要从常用句子中提取数据,您必须创建一个词典(如真正的词典(我们指的是含义))。在您的情况下,此词典必须包含与cup
,cups
,gram
,grams
等数量相关的字词以及表示chopped
等操作的过去时的字词},minced
等
现在迭代第一个列表。 按空格拆分列表中的每个条目。 从拆分列表中删除以下内容:
1/2
解析为其中包含/
个字符的数字)答案 1 :(得分:2)
正如评论中所指出的,“基本词”的定义在空中。但是如果你想保留一系列“非必要”词汇,问题就很简单了。首先,数据:
double xscale = printer.pageRect().width()/double(ui->table_log->width());
double yscale = printer.pageRect().height()/double(ui->table_log->height());
double scale = qMin(xscale, yscale);
painter.scale(scale, scale);
然后我们创建了一些简短的辅助函数来提高可读性。第一个接受一个字符串并确定它是否包含数字。我们将使用它来抛出像ingredients = ['2 tablespoons butter',
'1 1/2 cups long-grain rice',
'1/2 cup chopped onion',
'1/2 cup chopped green bell pepper',
'1 clove garlic, minced']
BAD_WORDS = {
'chopped', 'cup', 'cups', 'clove', 'tablespoons', 'minced'
}
:
'1/2'
第二个是接受一个单词并确定它是否通常不好的功能。如果一个单词出现在def contains_digit(w):
return any(c.isdigit() for c in w)
中或者包含一个数字,那么这个单词就不好了。
BAD_WORDS
然后我们系统地删除了坏词:
def is_bad(w):
return (w in BAD_WORDS) or contains_digit(w)
结果是:
extracted = []
for entry in ingredients:
words = [w.strip(',') for w in entry.split()]
remaining = [w for w in words if not is_bad(w)]
extracted.append(' '.join(remaining))