Я пытаюсь написать код, который читает мой входной файл csv с помощью pandas (df_input), а затем использует re.findall для любого вхождения переменных в список. Этот список импортируется из другого CSV-файла, где столбец [0] (df_expression) содержит переменные, которые я хочу, чтобы код искал, а столбец [1] (df_translation) содержит значения, которые я хочу вернуть код, когда есть точное совпадение. Таким образом, когда я ищу цвета, такие как «бордовый» и «бордовый», он переводится на «красный». Я пробовал эту настройку, поэтому я могу вносить изменения в мои переводы выражений, не меняя сам код.Не получать правильный вывод с re.findall
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
Эти возвращаемые значения:
resultlist
[['Black'], ['White'], ['Blue'], ['Red', 'Black'], ['Pink'], .....
Выходной ток, как найти в моем output.csv после df_input.to_csv (FilePath + имя файла):
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']
Preferred 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() - не работает, не добавляет [0] в конец моего re.findall и кучу других вещей. Единственное, что, похоже, выполняет эту работу, - это str (resultlist) .replace(), но тогда комбинация индекса и совпадения довольно запутана. Какие-либо предложения?
Пожалуйста, пост работоспособный код. Не просто фрагмент. – Saleem