Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从UTF-8文件中检索原始字符串?_Python_Utf 8_Beautifulsoup_Emoji - Fatal编程技术网

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

Python 如何从UTF-8文件中检索原始字符串?,python,utf-8,beautifulsoup,emoji,Python,Utf 8,Beautifulsoup,Emoji,我正在用python和BeautifulSoup进行一些web抓取 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') f

我正在用python和BeautifulSoup进行一些web抓取

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/>
aksara 140发布的推特并不适用于所有人,也不适用于其他人。随着aksara 280数量的增加,推特上的aksara 280数量增加了1%。Tulis panjang\xc2\xb2 nak buat karangan ka\xf0\x9f\x98\x9c
\n
\n如果你想在aksara 280上获得成功,那么你的tweet中有2%的内容是aksara 190。aksara的推文是280,而daripada的推文是140\xf0\x9f\x98\x8a
\n

tempvar
是一个Unicode字符串。要将其正确写入文件,请执行以下操作:

with open('tempfile', 'w', encoding='utf8') as fuu:
    fuu.write(tempvar)
用以下文字将其读回:

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

您使用的是什么版本的Python和BeautifulSoup?我无法复制您的问题。python 3.6.3和BS4您在Windows上吗?你能试着将
str(joji)写入一个文件,并对其进行编码('utf-8')
,看看编码是否正确吗?它抛出了“write()参数必须是str,而不是bytes”。是的,我在Windows上制作一个简短的脚本,该脚本实际上与一个简短的输入文件示例一起工作,并将它们完全按照编写和工作状态发布。显示准确的输出(不是“类似这样的东西”)和所需的输出。这给了我们一些不用猜测就可以调试的东西。