Прочитайте в файле и пропустите часть заголовка текстового файла в Python - PullRequest
2 голосов
/ 13 апреля 2011

Я взял книгу в текстовом формате с gutenberg.org, и я пытаюсь прочитать текст, но пропустить начальную часть файла, а затем использовать функцию процесса, которую я написал, чтобы проанализировать остальные , Как я могу это сделать?

Вот начало текстового файла.

> The Project Gutenberg EBook of The Kama Sutra of Vatsyayana, by Vatsyayana

This eBook is for the use of anyone anywhere at no cost and with
almost no restrictions whatsoever.  You may copy it, give it away or
re-use it under the terms of the Project Gutenberg License included
with this eBook or online at www.gutenberg.net


Title: The Kama Sutra of Vatsyayana
       Translated From The Sanscrit In Seven Parts With Preface,
       Introduction and Concluding Remarks

Author: Vatsyayana

Translator: Richard Burton
            Bhagavanlal Indrajit
            Shivaram Parashuram Bhide

Release Date: January 18, 2009 [EBook #27827]

Language: English


*** START OF THIS PROJECT GUTENBERG EBOOK THE KAMA SUTRA OF VATSYAYANA ***




Produced by Bruce Albrecht, Carla Foust, Jon Noring and
the Online Distributed Proofreading Team at
http://www.pgdp.net

и мой код, который в настоящее время обрабатывает весь файл.

import string

def process_file(filename):
    """ opens a file and passes back a list of its words"""
    h = dict()
    fin = open(filename)
    for line in fin:
        process_line(line, h)
    return h

def process_line(line, h):
    line = line.replace('-', ' ')

    for word in line.split():
        word = word.strip(string.punctuation + string.whitespace)
        word = word.lower()

        h[word] = h.get(word,0)+1

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Что ж, вы можете просто читать вводные данные, пока не совпадете с вашими критериями, чтобы пропустить начало:

def process_file(filename):
    """ opens a file and passes back a list of its words"""
    h = dict()
    fin = open(filename)

    for line in fin:
        if line.rstrip() == "*** START OF THIS PROJECT GUTENBERG EBOOK THE KAMA SUTRA OF VATSYAYANA ***":
            break

    for line in fin:
        process_line(line, h)

    return h

Обратите внимание, что я использовал line.rstrip() == "*** START OF THIS PROJECT GUTENBERG EBOOK THE KAMA SUTRA OF VATSYAYANA ***" в этом примере в качестве критерия, но вы можете прекрасно настроить своивладеть.

3 голосов
/ 13 апреля 2011

Добавить это:

for line in fin:
   if "START OF THIS PROJECT GUTENBERG BOOK" in line:
       break

перед вашим собственным циклом for line in fin:

...