Удалите '\ n' в тексте в pandas python

Следующий код - это текущий код, который я использую для удаления \ n в столбце ['text']:

df = pd.read_csv('file1.csv')

df['text'].replace('\s+', ' ', regex=True, inplace=True) # remove extra whitespace
df['text'].replace('\n',' ', regex=True) # remove \n in text

header = ["text", "word_length", "author"]

df_out = df.to_csv('sn_file1.csv', columns = header, sep=',', encoding='utf-8')

Я тоже пробовал из предложений:

df['text'].replace('\n', '')
df['text'] = df['text'].str.replace('\n', '').str.replace('\s+', ' ').str.strip()

Output: ' What a smartass! \nLike he knows anything about real estate deals too...'

Код для удаления пробелов работает. Но не в удалении \ n. Кто-нибудь может мне помочь в этом вопросе? Спасибо.

Я пытался решить, основываясь на предложении из этой ссылки тоже удаление новых строк из беспорядочных строк в ячейках фрейма данных pandas?, но он все еще не работает.

Решено:

df['text'].replace(r'\s+|\\n', ' ', regex=True, inplace=True) 

как работает df['text'].replace('\n', '')?

anky 10.09.2018 10:56

@ anky_91 ive пробовал, но все то же самое. Но спасибо за предложение

Lily 10.09.2018 11:00
\s также соответствует символам новой строки, поэтому он должен работать, если только ваша входная строка не содержит фактическую обратную косую черту, за которой следует буквальный n вместо переноса строки.
Tim Pietzcker 10.09.2018 11:01

df['text'] = df['text'].str.replace('\n', '').str.replace('\s+', ' ').str.strip() делает то, что вам нужно?

Jon Clements 10.09.2018 11:01

@TimPietzcker предположительно \n в тексте, который я получил, является структурной линией. Но как, если он изменился на фактическую обратную косую черту, за которой следует буквальный n, как вы упомянули? Как я могу с него работать?

Lily 10.09.2018 11:12

@JonClements тоже не работает, но спасибо

Lily 10.09.2018 11:13

@Lily, пожалуйста, ответьте на свой вопрос о предлагаемых решениях и их результатах, а также о том, насколько они отличаются от ваших ожиданий? В настоящий момент ... «нет, не работает» никому не помогает увидеть подход, который, возможно, мог бы быть возможным. Спасибо.

Jon Clements 10.09.2018 11:15

Похоже, что новой строки нет вообще, а есть \ + n. Если использовать df['text'].replace(r'\s+|\\n', ' ', regex=True, inplace=True), он пропадает?

Wiktor Stribiżew 10.09.2018 11:19

@ WiktorStribiżew Это работает !! Благодарю.

Lily 10.09.2018 11:24

@JonClements Я предлагаю закрыть это как опечатку.

Wiktor Stribiżew 10.09.2018 11:27
5
10
8 006
1

Ответы 1

Учитывая, что кто-то хочет применить изменения к столбцу «тексты», выберите этот столбец как

df['text']

Затем для этого можно использовать pandas.DataFrame.replace.

Это позволяет передавать регулярные выражения regex=True, которые будут интерпретировать обе строки в обоих списках как регулярные выражения (вместо того, чтобы сопоставлять их напрямую).

Взяв Предложение @Wiktor Stribiżew, следующее выполнит работу

df['text'] = df['text'].replace(r'\s+|\\n', ' ', regex=True) 

Справка по синтаксису регулярного выражения Этот может помочь.

Другие вопросы по теме