Замена текста с помощью регулярного выражения в списке строк в фрейме данных

#python #regex

#python #регулярное выражение

Вопрос:

У меня есть текстовый фрейм данных, в котором я хочу заменить текст некоторых подстрок. Например:

 "[' Foods are adequately protected from\n contamination during handling and storage.', ' Food handler hygiene and hand washing is\n properly followed.', ' Foods are cooked, cooled and stored at\n proper temperatures.', ' Garbage and/or waste is properly stored\n and removed.', ' Pest control practices are properly maintained.', ' Equipment and utensils are properly cleaned,\n sanitized and maintained.', ' Food premise is properly maintained in a clean\n and sanitary condition.']"
  

Я хочу заменить ‘n’ на «.

 [sub.replace('\n', '') for sub in abc_test] 
  

где abc_test — это только первая строка содержимого фрейма данных. Когда я применяю эту функцию, результат оказывается отличным от того, на что я надеялся.

 ['[',
 "'",
 ' ',
 'F',
 'o',
 'o',
 'd',
 's',
 ' ',
 'a',
 'r',
 'e',
 '
  

Любая помощь будет оценена.

Комментарии:

1. может быть abc_test.replace('\n','') ?

Ответ №1:

Дело в том, что ваши строки содержат комбинации обратной косой черты и n символа, а не символов новой строки. Таким образом, ни "n" (LF, перевод строки, символ), ни "\n" ( n экранирование регулярного выражения, соответствующее новой строке, LF, символ) не работают.

Вы можете использовать

 df['res'] = df['text'].str.replace(r"\n", "")
  

Тест Pandas:

 >>> import pandas as pd
>>> df = pd.DataFrame({'text': [' Foods are adequately protected from\n contamination during handling and storage.', ' Food handler hygiene and hand washing is\n properly followed.', ' Foods are cooked, cooled and stored at\n proper temperatures.', ' Garbage and/or waste is properly stored\n and removed.', ' Pest control practices are properly maintained.', ' Equipment and utensils are properly cleaned,\n sanitized and maintained.', ' Food premise is properly maintained in a clean\n and sanitary condition.']})
>>> df['res'] = df['text'].str.replace(r"\n", "")
>>> df
                                                text                                                res
0   Foods are adequately protected fromn contami...   Foods are adequately protected from contamina...
1   Food handler hygiene and hand washing isn pr...   Food handler hygiene and hand washing is prop...
2   Foods are cooked, cooled and stored atn prop...   Foods are cooked, cooled and stored at proper...
3   Garbage and/or waste is properly storedn and...   Garbage and/or waste is properly stored and r...
4    Pest control practices are properly maintained.    Pest control practices are properly maintained.
5   Equipment and utensils are properly cleaned,...   Equipment and utensils are properly cleaned, ...
6   Food premise is properly maintained in a clea...   Food premise is properly maintained in a clea...