Maison > Questions et réponses > le corps du texte
巴扎黑2017-04-18 10:12:29
Essayez sans tuples
print h2, a
Cela devrait toujours être un problème d'encodage résiduel
Lors de l'impression, le __str__() du tuple est en fait appelé
>>> h = u'你好'
>>> (h, 8).__str__()
"(u'\u4f60\u597d', 8)"
巴扎黑2017-04-18 10:12:29
Cela est dû à différentes méthodes d'encodage. L'encodage de la plate-forme Windows est généralement gbk ou isoxxx. Vérifiez la méthode d'encodage du Web (vous pouvez la vérifier dans Chrome), puis convertissez l'encodage en celui du système. et tout ira bien
高洛峰2017-04-18 10:12:29
En fait, vous pouvez afficher le chinois en affichant h2 seul. Si vous devez afficher des tuples comme vous le faites, reportez-vous au code suivant
.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
Lorsque vous rencontrez des problèmes de codage, et que vous avez également besoin de comprendre les origines historiques du codage, vous pouvez lire cet article, http://foofish.net/python-cha... Vous saurez comment analyser le problème lorsque vous rencontrez du codage dans le futur.
PHPz2017-04-18 10:12:29
Le début de u'' indique qu'il est déjà unicode. Il n'y a pas de problème avec l'encodage, mais il y a un problème avec la façon dont vous imprimez. Si vous le modifiez en 2.7, ça devrait aller<🎜. >
print '%s,%s'%(h2, a)