Как заменить символы новой строки на строку \ n в Excel - PullRequest
1 голос
/ 10 октября 2019

У меня есть Excel, который мне нужно преобразовать в определенный формат для записи в файл CSV. Одна из проблем, с которыми я сталкиваюсь, это то, что у меня есть значения ячеек с символами новой строки

Например:

Hi, This is Me. This is a standard Description. This is what I do.

Я хочу заменить новые строки на строку "\ n, как показано ниже. Например:

Hi, This is Me.\n This is a standard Description.\n This is what I do.

Я не могу этого сделать.

Я пытался заменить \ n на \ n, это не работает. Однако \ n с пустой строкой или любым другим допустимым символом работает.

import pandas as pd
my_sheet = 'Sheet1' # name of the sheet in the excel file
file_name = 'bulkload_format.xlsx' # name of my excel file
df = pd.read_excel(file_name, sheet_name = my_sheet)
cols = [16] # i want data in column 16 alone, this has \n characters that needs replacing
df = df[df.columns[cols]]
df = df.replace('\n','\\n', regex=True) #this does not work
for index, row in df.iterrows():
    print(index, row[0])
export_csv = df.to_csv('out.csv', index = None, header=True, encoding='utf-8') #it directly write new lines in the CSV

\ n литерал необходимо заменить на \ n строку.

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Это не самое эффективное решение, надеюсь, оно сработает, давайте возьмем имя вашего столбца как text и фрейм данных как df

df["temp"] = df["text"].apply(lambda x: x.split('\n'))
df["text"] = df["temp"].apply(lambda x: ' \\n '.join(x))
df.drop(["temp"])
0 голосов
/ 11 октября 2019

Более быстрое решение с использованием text возможностей pandas по сравнению с решением @Rajith Thennakoon будет:

df['name'] = df['name'].str.replace('\n', '\\n')
# 1000 loops, best of 3: 663 µs per loop

по сравнению с

df['temp'] = df['name'].apply(lambda x: x.split('\n'))
df['name'] = df['temp'].apply(lambda x: ' \\n '.join(x))
df.drop(columns=['temp'])
# 1000 loops, best of 3: 1.98 ms per loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...