re.findall 没有得到正确的输出

Not getting the proper output with re.findall

我正在尝试编写一个代码,用 pandas (df_input) 读取我的输入 csv 文件,然后对列表中出现的任何变量使用 re.findall。此列表是从另一个 .csv 文件导入的,其中列 [0] (df_expression) 包含我希望代码搜索的变量,列 [1] (df_translation) 包含我希望代码搜索的值return 完全匹配时。这样,当我搜索像 'burgundy' 和 'maroon' 这样的颜色时,它会被翻译成 'red'。我一直在尝试这种设置,这样我就可以在不更改代码本身的情况下更改我的表达式翻译。

df_name = df_input[0]

def expression(expr, string):
    return True if len(re.findall(r'\b' + expr + r'\b', string, re.I)) > 0 else False

resultlist = []
    for lineIndex in range(0, len(df_input)):
        matches_list = []
        for expIndex in range(0, len(df_expressions)):
            if expression(str(df_expressions.ix[expIndex]), str(df_name.ix[lineIndex])):
                matches_list.append(df_translation.ix[expIndex])

df_input['Color'] = resultlist

这些是 return 值:

resultlist
[['Black'], ['White'], ['Blue'], ['Red', 'Black'], ['Pink'], .....

在 df_input.to_csv(文件路径+文件名):

之后在我的 output.csv 中找到的当前输出
Name,Color
a black car,['Black']
a white paper,['White'] 
the sky is blue,['Blue']
this product is burgundy and black,['Red, Black']
just pink,['Pink'] 

首选 output.csv:

Name,Color
a black car,Black
a white paper,White 
the sky is blue,Blue
this product is burgundy and black,Red;Black
just pink,Pink

是否有可能丢失括号和引号,所以每当我这样做时 df_input.to_csv(filepath+filename) 我得到一个干净的输出? 我试过 df.replace() - 没有用,在我的 re.findall 末尾添加 [0] 和其他一些东西也没有用。似乎唯一能完成这项工作的是 str(resultlist).replace(),但是索引匹配组合非常混乱。有什么建议吗?

尝试进行以下更改,看看效果如何。

替换

df_input['Color'] = resultless

df_input['Color'] = [', '.join(c) for c in resultlist]

这应该将 resultless 转换为 ['Black', 'White', 'Blue', 'Red, Black', 'Pink', ...]