将循环迭代组合成单行并且没有匹配处理

时间:2018-03-08 09:33:56

标签: python regex for-loop

可能是一个非常基本的问题,但希望有人可以提供帮助。

我有以下内容:

query = ['whole regular milk', 'gatorade is better', 'whole almond chocolate 
milk', 'chocolate milk']

types = ['whole', 'regular', 'chocolate' ]

new_list = []

for i in query:
    for k in types:
        regex_concat = r"\b" + k + r"\b"
        new_regex =  re.search(regex_concat,i)
        if (str(new_regex)) != 'None':
            print((new_regex.group()))
        else:
            print('no match')

谁的输出产生以下内容:

whole
regular
no match
no match
no match
no match
whole
no match
chocolate
no match
no match
chocolate

我理想的输出是:

whole | regular
Blank
whole | chocolate
chocolate

问题:

我想我应该能够使用以下内容将输出合并为一行:

print((new_regex.group()), end= "|", flush=True)

会给我:

whole|regular|no match
no match
no match
no match
whole|no match
chocolate|no match
no match
chocolate|

我似乎无法弄清楚如何净化到上面请求的输出。

一些额外的说明 -

查询列表将从pd DataFrame编译。从那里,我想使用所需的输出,我将其转换为列表>系列,映射回pd DataFrame。这就是为什么我希望空白行仍然存在,因为最终输出应该如下所示:

Query                         Type
whole regular milk            whole | regular
gatorade is better             
whole almond chocolate milk   whole | choclate  
chocolate milk                chocolate

1 个答案:

答案 0 :(得分:1)

如果您的输入已经是数据框,则可以在数据框级别执行所有操作:

{{1}}