web-dev-qa-db-fra.com

Comment supprimer \ n et \ r d'une chaîne

J'essaie actuellement d'obtenir le code de ce site Web: http://netherkingdom.netai.net/pycake.html Ensuite, j'ai un script python analysant tout code dans les balises div html, et enfin écrire le texte entre les balises div dans un fichier. Le problème est qu'il ajoute un tas de\r et\n au fichier. Comment puis-je éviter cela ou supprimer les\r et\n. Voici mon code:

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)

Et voici le fichier résultant qu'il crée:

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'

De préférence, je voudrais également supprimer le début b 'et le dernier'. J'utilise Python 3.5.1 sur un Mac.

11
HittmanA

Une solution simple consiste à supprimer les espaces de fin:

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

L'avantage de rstrip() par rapport à l'utilisation d'une tranche [:-2] Est que cela est également sûr pour les fichiers de style UNIX.

Cependant, si vous voulez seulement vous débarrasser de \r Et qu'ils ne sont peut-être pas en fin de ligne, alors str.replace() est votre ami:

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

Si vous avez un objet octet (c'est le premier b'), Vous pouvez le convertir en une chaîne native Python 3 en utilisant:

line = line.decode()
20
cdarke