Python: Как сохранить разрывы чтения из текстового файла при печати в HTML - PullRequest
1 голос
/ 21 февраля 2012

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

Я получаю результаты в шаблоне таким образом:

class BottomPipeResult :

    AGENT_ID   = "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"

    BOTTOMPIPE_URL = "http://boilerpipe-web.appspot.com/extract?url={0}&extractor=LargestContentExtractor&output=text"

    #BOTTOMPIPE_URL = "http://boilerpipe-web.appspot.com/extract?url={0}&extractor=ArticleExtractor&output=htmlFragment"

    _myBPPage = ""

    # scrape and get results from bottompipe
    def scrapeResult(self, theURL, user_agent=AGENT_ID) :
        request = urllib2.Request(self.BOTTOMPIPE_URL.format(theURL))
        if user_agent:
            request.add_header("User-Agent", user_agent)
            pagefile = urllib2.urlopen(request)
            realurl = pagefile.geturl()
            f = pagefile
            self._myBPPAge = f.read()
        return(self._myBPPAge) 

, нокогда я перепечатываю их в html, я теряю все разрывы строк.

Вот код, который я использую для записи в HTML

f = open('./../../entries-new.html', 'a')
f.write(BottomPipeResult.scrapeResult(myLinkResult))
f.close()

Вот пример результата текста Booilerpipe:

http://boilerpipe-web.appspot.com/extract?url=http%3A%2F%2Fresult.com&extractor=ArticleExtractor&output=text

Я попробовал это, но это не работает:

myLinkResult = re.sub('\n','<br />', myLinkResult)

Есть предложения?

Спасибо

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Вы можете обернуть текст в

tag. This tells the HTML that the text is pre-formatted.</p>

<p>eg:</p>

<pre><code><pre>Your text
With line feeds
and other things
0 голосов
/ 21 февраля 2012

Я изменил ваш код одним касанием, чтобы он был работоспособным, и, кажется, он "работает" правильно для меня.Полученный результат имеет окончания строк там, где ожидается.Я вижу некоторые проблемы с кодировкой, но нет проблем с окончанием строки.

Код

import urllib2

class BottomPipeResult :

    AGENT_ID   = "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
    BOTTOMPIPE_URL = "http://boilerpipe-web.appspot.com/extract?url={0}&extractor=LargestContentExtractor&output=text"
    _myBPPage = ""

    # scrape and get results from bottompipe
    def scrapeResult(self, theURL, user_agent=AGENT_ID) :
        request = urllib2.Request(self.BOTTOMPIPE_URL.format(theURL))
        if user_agent:
            request.add_header("User-Agent", user_agent)
            pagefile = urllib2.urlopen(request)
            realurl = pagefile.geturl()
            f = pagefile
            self._myBPPAge = f.read()
        return(self._myBPPAge) 


bpr = BottomPipeResult()
myLinkResult = 'http://result.com'

f = open('out.html', 'a')
f.write(bpr.scrapeResult(myLinkResult))
f.close()

Вывод

Result-Expand.flv
We want to help your company grow. Our Result offices around the world can help you expand your business faster and more cost efficiently. And at the same time bring the experience of having expanded more than 150 companies during the past ten years.
Result can help you grow in your local market, regionally, or globally through our team of experienced business builders, our industry know-how and our know-who.
Our services range from well designed expansion strategies to assuming operational responsibility for turning these strategies into successful business.
We don’t see ourselves as mere consultants  who give you a strategy presentation and then leave you to your own devices. We prefer to be considered as an extended, entirely practical arm of your management team. We’re hands-on and heads-on. We’re business builders.
We’re co-entrepreneurs. This is also reflected in our compensation structure – a significant part of our compensation is result  based.

Делаем результаты более "HTML", как

Что касается вывода html, вы, вероятно, хотите заключить каждую строку в тег <p> абзаца.

output = BottomPipeResult.scrapeResult(myLinkResult) 
f.write('\n'.join(['<p>' + x + '</p>' for x in output.split('\n')]))
...