Rumah > Soal Jawab > teks badan
巴扎黑2017-04-18 10:12:29
Cuba tanpa tupel
print h2, a
Ia sepatutnya masih menjadi masalah pengekodan yang tinggal
Apabila mencetak, __str__() tuple sebenarnya dipanggil
>>> h = u'你好'
>>> (h, 8).__str__()
"(u'\u4f60\u597d', 8)"
巴扎黑2017-04-18 10:12:29
Disebabkan kaedah pengekodan yang berbeza, pengekodan platform windows biasanya gbk atau isoxxx Semak kaedah pengekodan web (tersedia dalam chrome), dan kemudian tukar pengekodan kepada sistem yang sama dan ia akan menjadi ok.
高洛峰2017-04-18 10:12:29
Malah, anda boleh mengeluarkan bahasa Cina dengan mengeluarkan h2 sahaja. Jika anda perlu mengeluarkan tuple seperti yang anda lakukan, rujuk kod berikut
from __future__ import unicode_literals
#-*-coding:utf-8-*-
import requests
from bs4 import BeautifulSoup
res = requests.get('http://news.sina.com.cn/china/')
res.encoding='utf-8'
soup=BeautifulSoup(res.text,'html.parser')
for news in soup.select('.news-item'):
if len(news.select('h2'))>0:
h2=news.select('h2')[0].text
a=news.select('a')[0]['href']
test = str((h2, a))
print(test.decode("unicode-escape"))
巴扎黑2017-04-18 10:12:29
Apabila anda menghadapi masalah pengekodan, dan anda juga perlu memahami asal usul sejarah pengekodan, anda boleh membaca artikel ini, http://foofish.net/python-cha... Anda akan tahu cara menganalisis masalah apabila anda menghadapi pengekodan pada masa hadapan.
PHPz2017-04-18 10:12:29
Permulaan u'' menunjukkan bahawa ia sudah pun unicode. Tidak ada masalah dengan pengekodan, tetapi terdapat masalah dengan cara anda mencetak Jika anda menukarnya kepada ini dalam 2.7, ia sepatutnya baik
print '%s,%s'%(h2, a)