Проблема с переводом строки / новой строки при записи проанализированного текста в файл .csv в python3 - PullRequest
0 голосов
/ 21 ноября 2018

Возникла проблема с разбором извлеченного текста из html с BeautifulSoup и записью его в файл .csv.

Анализ страницы с данными, такими как Заголовок , Дата , Описание , Информация

У меня есть текстовый пример Описание с точной структурой, проанализированной с веб-страницы.У него есть тетеги и двойные пробелы:

<p>Hello World <br/>
<br/>
Key points <br/>
<br/>
 -  Point number one  <br/>
 -  Point number two    <br/>
 -  Point number three  </p>

Так что мне удалось извлечь его как текст, используя .text.strip () Теперь это:

Hello World 

Key points 

 -  Point number one  
 -  Point number two    
 -  Point number three  

Затем я хочу сохранить результаты в файл .csv, каждый результат в новую ячейку:

Title, Date, Description, Info
Title, Date, Description, Info
Title, Date, Description, Info

Для этого я создаю файл, устанавливаю заголовки и начинаю запись в него с помощью цикла FOR * 1026.*

filename = "scraping.csv"
f = open(filename, "w")

headers = "Title, Date, Description, Info\n"
f.write(headers)
for article in articles:
    ...
    f.write(title + "," + date + "," + description + "," + info + "\n")
f.close()

И в конце у меня есть файл .csv со всей информацией.Проблема в том, что когда description передается в файл, он разбивает все строки.

Title, Date, 
Des
crip
tion, Info
Title, Date, 
Des
crip
tion, Info    
Title, Date, 
Des
crip
tion, Info

Если я записываю в файл все, кроме description , все хорошо.

Как сохранить это описание в ячейке и игнорировать все нежелательные символы новой строки / переноса строки?

ОБНОВЛЕНИЕ :
Основано на предложениис @ ewwink эта комбинация помогла удалить нежелательные разрывы строк

description = re.sub(r"[\r\n]+", " ", description)

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

pilcrow = """
    """
description = re.sub(r"[\r\n]+", pilcrow, description)

1 Ответ

0 голосов
/ 21 ноября 2018

, чтобы сохранить его как .csv файл, вам нужно удвоить значение в кавычках, чтобы при наличии , он не сломал ваш столбец csv и не ушел " с ""

for article in articles:
    ...
    # description = re.sub(r"[\r\n]+", " ", description)
    description = description.replace('"', '""')
    rows = '"%s","%s","%s","%s"\n' % (title, date, description, info)
    f.write(rows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...