Разбор простого текстового файла в CSV-файл с использованием Python

У меня есть серия HTML-файлов, которые обрабатываются в один текстовый файл с помощью Beautiful Soup. Файлы HTML отформатированы таким образом, что их вывод всегда состоит из трех строк в текстовом файле, поэтому результат будет выглядеть примерно так:

Hello! How are you? Well, Bye! 

Но так же легко было бы

 83957 And I ain't coming back! hgu39hgd 

Другими словами, содержимое файлов HTML не является стандартным для каждого из них, но они всегда производят три строки.

Поэтому мне было интересно, куда я должен начать, если захочу, чтобы затем взять текстовый файл, который был создан из Beautiful Soup, и проанализировать его в CSV-файл с такими столбцами, как (используя приведенные выше примеры):

 Title Intro Tagline Hello! How are you? Well, Bye! 83957 And I ain't coming back! hgu39hgd 

Код Python для удаления HTML из текстовых файлов:

 import os import glob import codecs import csv from bs4 import BeautifulSoup path = "c:\\users\\me\\downloads\\" for infile in glob.glob(os.path.join(path, "*.html")): markup = (infile) soup = BeautifulSoup(codecs.open(markup, "r", "utf-8").read()) with open("extracted.txt", "a") as myfile: myfile.write(soup.get_text()) 

И я понимаю, что могу использовать это, чтобы настроить столбцы в моем файле CSV:

 csv.put_HasColumnNames(True) csv.SetColumnName(0,"title") csv.SetColumnName(1,"intro") csv.SetColumnName(2,"tagline") 

Где я рисую пустым, так это то, как перебирать текстовый файл (extract.txt) по одной строке за раз, и, по мере того, как я попадаю в новую строку, установите его в правильную ячейку в файле CSV. Первые несколько строк файла пусты, и между каждой группировкой текста существует много пустых строк. Итак, сначала мне нужно будет открыть файл и прочитать его:

 file = open("extracted.txt") for line in file.xreadlines(): pass # csv.SetCell(0,0 X) (obviously, I don't know what to put in X) 

Кроме того, я не знаю, как сказать Python просто продолжать читать файл и добавлять в файл CSV до его завершения. Другими словами, нет способа точно узнать, сколько общих строк будет в файлах HTML, и поэтому я не могу просто csv.SetCell(0,0) to cdv.SetCell(999,999)

2 Solutions collect form web for “Разбор простого текстового файла в CSV-файл с использованием Python”

Я не совсем уверен, какую библиотеку CSV вы используете, но она не похожа на встроенную в Python . Во всяком случае, вот как я это сделаю:

 import csv import itertools with open('extracted.txt', 'r') as in_file: stripped = (line.strip() for line in in_file) lines = (line for line in stripped if line) grouped = itertools.izip(*[lines] * 3) with open('extracted.csv', 'w') as out_file: writer = csv.writer(out_file) writer.writerow(('title', 'intro', 'tagline')) writer.writerows(grouped) 

Этот тип делает трубопровод. Сначала он получает данные из файла, затем удаляет все пробелы из строк, затем удаляет любые пустые строки, затем группирует их по группам из трех, а затем (после записи заголовка CSV) записывает эти группы в файл CSV.

Чтобы объединить последние два столбца, как вы упомянули в комментариях, вы можете поменять вызов writerow очевидным образом и writerows :

 writer.writerows((title, intro + tagline) for title, intro, tagline in grouped) 

Возможно, я не понял вас правильно, но вы можете сделать:

 file = open("extracted.txt") # if you don't want to do .strip() again, just create a list of the stripped # lines first. lines = [line.strip() for line in file if line.strip()] for i, line in enumerate(lines): csv.SetCell(i % 3, line) 
  • Использование Pandas read_csv () в открытом файле дважды
  • Python конвертировать Excel 2004 xml в csv (или excel)
  • Экспорт результатов ClearSoup в CSV; scrape + включить значения изображения в столбце
  • Непрерывный анализ файлов CSV, которые обновляются другим процессом
  • Как прочитать CSV-файл из URL-адреса с помощью Python?
  • Прочитать конкретные столбцы из файла csv с помощью модуля csv?
  • записывать искробезопасный фрейм как CSV с разделами
  • Получить данные из Twitter с помощью Tweepy и сохранить в csv-файле
  • Pandas - пишите строки Multiindex с to_csv
  • Фильтрация данных с помощью панд
  • Открытие csv-файла в Python с использованием Flask
  • Python - лучший язык программирования в мире.