作者elmo56 (政大柯景騰)
看板Python
標題[問題] 從網頁抓資料,中文處理上的問題
時間Sat Oct 25 20:13:12 2014
我的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 就會亂亂的
故發文求解惑
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.119.164.134
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1414239194.A.6AB.html
→ alibuda174: 應該不會 你說的亂碼是什麼? 10/25 20:53
※ 編輯: elmo56 (140.119.164.134), 10/25/2014 20:56:23
→ alibuda174: 試試 print newslist[0] 10/25 20:54
※ 編輯: elmo56 (140.119.164.134), 10/25/2014 21:01:51
→ alibuda174: 那個不是亂碼 而是中文字元的unicode 10/25 21:09
→ alibuda174: 改用python3的話 可能就會正常印出中文字 10/25 21:12
→ elmo56: 謝謝解答,但若在python2.7下 你會有其他方式解決嗎 10/25 21:19
→ penguin7272: print " ".join(newslist) 10/25 22:01
→ uranusjr: 推薦你這個好棒的 uniout 函式庫 10/26 00:14
→ elmo56: uniout OK,因為我未來還想搭配畫圖 10/26 01:10
推 yauhh: 2.x版預設環境是ascii,檔案開頭加# -*- coding: utf-8 -*- 11/02 14:34
→ yauhh: 可以正確顯示. 假如是windows環境你自己找找看類似方案. 11/02 14:35