如何从字符串中删除\n和\r

2024-06-18 20:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从这个网站获取代码:http://netherkingdom.netai.net/pycake.html 然后我用一个python脚本解析html div标记中的所有代码,最后将div标记之间的文本写到一个文件中。问题是它在文件中添加了一组\r和\n。如何避免此问题,或者删除和。下面是我的代码:

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'

最好我也希望有开始b'和最后一个'删除。我在Mac上使用Python3.5.1。


Tags: 文件代码标记importdivhttpparserdata
2条回答

一个简单的解决方案是去掉每行的最后两个字符:

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

一个简单的解决方案是去掉尾随空白:

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

与使用[:-2]片相比,rstrip()的优点是,这对于UNIX样式的文件也是安全的。

但是,如果你只想摆脱\r,而他们可能不在最后一行,那么str.replace()就是你的朋友:

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

如果您有一个byte对象(即前导的b'),则可以使用以下命令将其转换为本机Python 3字符串:

line = line.decode()

相关问题 更多 >