无法删除python3字符串中的\ n和\ t?

时间:2013-08-28 22:53:45

标签: python-3.x

所以我一直试图从CL格式化所拍摄的网页,以便将其发送到我的电子邮箱, 但这是我每次尝试删除\n\t

时我想出的
b'\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n\n\t\n\n\n\t
\n\t\t\t
\n\t
\n\t\t
\n\t\t\t
\n 0 favorites\n
\n\n\t\t
\n\t\t
∨
\n\t\t
∧
\n\t\t
\n \n
\n
\n\t \tCL wenatchee all personals casual encounters\n
\n
\n\t\t
\n\t
\n
\n\n\t\t
\n\t\t\t
\n\t\n\t\t\n\t\n\n\n\nReply to: 59nv6-4031116628@pers.craigslist.org\n
\n\n\n\t
\n\t\n\t\tflag [?] :\n\t\t\n\t\t\tmiscategorized\n\t\t\n\t\t\tprohibited\n\t\t\n\t\t\tspam\n\t\t\n\t\t\tbest of\n\t\n
\n\n\t\t

Posted: 2013-08-28, 8:23AM PDT
\n
\n\n
\n \n Well... - w4m - 22 (Wenatchee)\n

我已经尝试过剥离,替换甚至正则表达式,但没有任何目标,它总是出现在我的电子邮件中,不受任何影响。

以下是代码:

try:
    if url.find('http://') == -1:
        url = 'http://wenatchee.craigslist.org' + url
    html = urlopen(url).read()
    html = str(html)
    html = re.sub('\s+',' ', html)
    print(html)
    part2 = MIMEText(html, 'html')
    msg.attach(part2)
    s = smtplib.SMTP('localhost')
    s.sendmail(me, you, msg.as_string())
    s.quit()

1 个答案:

答案 0 :(得分:5)

你的问题是,尽管有相反的证据,你仍然有一个bytes对象而不是你希望的str。因此,您的尝试没有任何结果,因为如果未指定编码,则无法将任何内容(正则表达式,替换参数等)与您的html字符串进行匹配。

您需要做的是首先decode字节。

就个人而言,我最喜欢的清理空格的方法是使用string.splitstring.join。这是一个有效的例子。我删除任何类型的空格的所有运行,并用单个空格替换它们。

try:
    html = urlopen('http://wenatchee.craigslist.org').read()
    html = html.decode("utf-8") # Decode the bytes into a useful string
    # Now split the string over all whitespace, then join it together again.
    html = ' '.join(html.split())
    print(html)
    s.quit()
except Exception as e:
    print(e)