2016-03-06 6 views
3

В настоящее время я пытаюсь получить код с этого сайта: http://netherkingdom.netai.net/pycake.html Тогда у меня есть скрипт python, который выставляет весь код в тегах html div и, наконец, записывает текст между теги div в файл. Проблема в том, что он добавляет кучу файлов \ r и \ n в файл. Как я могу либо избежать этого, либо удалить \ r и \ n. Вот мой код:Как удалить n и r из строки

import urllib.request 
from html.parser import HTMLParser 
import re 
page = urllib.request.urlopen('http://netherkingdom.netai.net/pycake.html') 
t = page.read() 
class MyHTMLParser(HTMLParser): 
    def handle_data(self, data): 
     print(data) 
     f = open('/Users/austinhitt/Desktop/Test.py', 'r') 
     t = f.read() 
     f = open('/Users/austinhitt/Desktop/Test.py', 'w') 
     f.write(t + '\n' + data) 
     f.close() 
parser = MyHTMLParser() 
t = t.decode() 
parser.feed(t) 

А вот полученный файл он делает:

b' 
import time as t\r\n 
from os import path\r\n 
import os\r\n 
\r\n 
\r\n 
\r\n 
\r\n 
\r\n' 

Предпочтительно я хотел бы также иметь начинающему Ь «и последняя» удалена. Я использую Python 3.5.1 на Mac.

+3

Python 2.x или 3.x? – RafaelC

+1

Я бы сказал 3.x, если urllib возвращает объект байтов –

+0

Кроме того, 'html.parser' является Python 3. –

ответ

6

Простое решение заключается в полоске конечные пробелы:

with open('gash.txt', 'r') as var: 
    for line in var: 
     line = line.rstrip() 
     print(line) 

Преимущество rstrip() по сравнению с использованием [:-2] - это то, что это безопасно для файлов стиля UNIX.

Однако, если вы только хотите, чтобы избавиться от \r и они не могут быть на линии конца-, то str.replace() ваш друг:

line = line.replace('\r', '') 

Если у вас есть объект байт (это ведущий b'), вы можете преобразовать его в родную строку Python 3, используя:

line = line.decode() 
+0

Хорошо спасибо, я попробую! – HittmanA

+0

Это не работает. Я попробовал, и это не изменило его. – HittmanA

+0

Была опечатка (корректирующий текст OS X), 'strip' должен был быть' rstrip'. – cdarke

0

Одно простое решение состоит просто содрать последние два символа каждой строки:

f = open('yourfile') 
for line in f.readlines(): 
    line = line[:-2] # Removes last two characters (\r\n) 
    print(repr(line)) 
+0

Как я могу удалить материал \ r и \ n? – HittmanA

+0

Это удаляет \ r \ n, если они находятся в конце каждой строки файла. –

+0

О, хорошо спасибо! – HittmanA