[問題] 從網頁抓資料,中文處理上的問題

作者: elmo56 (小樹芽)   2014-10-25 20:13:12
我的python 是2.7版
是用beautifulsoup 去抓網頁資料
抓到了table裡面的值
例如 a[2]= <td> 雅虎新聞 Yahoo news </td>
a[3]= <td> 四 thr </td>
我也透過 a[2]=a[2].get_text()
把tag給去掉
只留下 text的部分
若我現在 print a[2],a[3]
結果: 雅虎新聞 Yahoo news 四 thr
但現在問題是
若我設一個 newslist=[]
再把 newslist.append(a[2])
newslist.append(a[3])
在print newslist
結果會變成 中文字是亂碼
英文是正常的
單獨印出那個位置的時候 正常
printf newslist[0] 會顯示 雅虎新聞 Yahoo news
printf newslist 會變成 u'\u4eda\u623f\u4eds\ Yahoo news u'\u4dsw thr
上面編碼是我亂打的但會是這樣的情況
要印出整個list 或是dict 就會亂亂的
故發文求解惑
謝謝大家
作者: alibuda174 (阿哩不達)   2014-10-25 20:53:00
應該不會 你說的亂碼是什麼?試試 print newslist[0]那個不是亂碼 而是中文字元的unicode改用python3的話 可能就會正常印出中文字
作者: elmo56 (小樹芽)   2014-10-25 21:19:00
謝謝解答,但若在python2.7下 你會有其他方式解決嗎
作者: penguin7272 (企鵝)   2014-10-25 22:01:00
print " ".join(newslist)
作者: uranusjr (←這人是超級笨蛋)   2014-10-26 00:14:00
推薦你這個好棒的 uniout 函式庫
作者: elmo56 (小樹芽)   2014-10-26 01:10:00
uniout OK,因為我未來還想搭配畫圖
作者: yauhh (小y寶貝)   2014-11-02 14:34:00
2.x版預設環境是ascii,檔案開頭加# -*- coding: utf-8 -*-可以正確顯示. 假如是windows環境你自己找找看類似方案.

Links booklink

Contact Us: admin [ a t ] ucptt.com