Следующий код - это текущий код, который я использую для удаления \ 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)
@ anky_91 ive пробовал, но все то же самое. Но спасибо за предложение
\s
также соответствует символам новой строки, поэтому он должен работать, если только ваша входная строка не содержит фактическую обратную косую черту, за которой следует буквальный n
вместо переноса строки.
df['text'] = df['text'].str.replace('\n', '').str.replace('\s+', ' ').str.strip()
делает то, что вам нужно?
@TimPietzcker предположительно \n
в тексте, который я получил, является структурной линией. Но как, если он изменился на фактическую обратную косую черту, за которой следует буквальный n
, как вы упомянули? Как я могу с него работать?
@JonClements тоже не работает, но спасибо
@Lily, пожалуйста, ответьте на свой вопрос о предлагаемых решениях и их результатах, а также о том, насколько они отличаются от ваших ожиданий? В настоящий момент ... «нет, не работает» никому не помогает увидеть подход, который, возможно, мог бы быть возможным. Спасибо.
Похоже, что новой строки нет вообще, а есть \
+ n
. Если использовать df['text'].replace(r'\s+|\\n', ' ', regex=True, inplace=True)
, он пропадает?
@ WiktorStribiżew Это работает !! Благодарю.
@JonClements Я предлагаю закрыть это как опечатку.
Учитывая, что кто-то хочет применить изменения к столбцу «тексты», выберите этот столбец как
df['text']
Затем для этого можно использовать pandas.DataFrame.replace
.
Это позволяет передавать регулярные выражения regex=True
, которые будут интерпретировать обе строки в обоих списках как регулярные выражения (вместо того, чтобы сопоставлять их напрямую).
Взяв Предложение @Wiktor Stribiżew, следующее выполнит работу
df['text'] = df['text'].replace(r'\s+|\\n', ' ', regex=True)
Справка по синтаксису регулярного выражения Этот может помочь.
как работает
df['text'].replace('\n', '')
?