代码之家  ›  专栏  ›  技术社区  ›  nestalgia

如何从UTF-8文件中检索原始字符串?

  •  0
  • nestalgia  · 技术社区  · 7 年前

    我正在用python和BeautifulSoup做一些网页抓取。

    body = soup.find("article")
    tempvar = body.find()
    
    fuu = open('tempfile', 'w')
    tempvar = tempvar.encode('utf-8')
    fuu.write(str(tempvar))
    fuu.close()
    
    fupa = open('tempfile')
    joji = BeautifulSoup(fupa,'html.parser')
    fupa.close()
    
    print(joji)
    

    tempvar公司 将包含html内容,有时带有表情符号。 我想稍后在一个真正的html文件中使用文件tempfile的内容。

    印刷品(joji)产生如下内容:

    <b>mencapai\xc2\xa0batas aksara 140</b>, tapi sudah tentu itu tidak termasuk semua <i>tweet </i>yang tak pernah dihantar kerana pengguna tidak boleh nak luahkan apa yang mereka mahukan. Selepas <b>mengaktifkan aksara 280</b> pada <b>sejumlah kecil akaun </b>yang bertuah, <b>Twitter </b>mengatakan <b>hanya 1%</b> sahaja <b>pengguna yang capai had aksara 280</b>. Tulis panjang\xc2\xb2 nak buat karangan ka. \xf0\x9f\x98\x9c<br/>\n<br/>\nIa juga jarang berlaku bagi pengguna untuk mencapai aksara 280, hanya <b>2%</b> dari <i>tweet </i><b>melebihi aksara 190</b>. <b>Had aksara tweet sebanyak 280 </b>juga <b>mendapat lebih <i>likes </i>dan <i>retweets </i></b>daripada had aksara <i>tweet </i>sebanyak 140. \xf0\x9f\x98\x8a<br/>\n<br/>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark Tolonen    7 年前

    tempvar 是Unicode字符串。要将其正确写入文件:

    with open('tempfile', 'w', encoding='utf8') as fuu:
        fuu.write(tempvar)
    

    用以下文字重新阅读:

    with open('tempfile', encoding='utf8') as fupa:
        ...