→ uranusjr: 你上面的那段我砍掉多餘的換行後可以直接執行無誤 06/16 12:20
→ uranusjr: 所以問題不是這段文字, 是你其他程式 06/16 12:21
你是說把if那段直接print出來嗎? 直接print出來是可以轉成中文
這樣就跟我下面另存成aa的做法一樣
問題點是在爬蟲下來的if那段\u6708無法解碼
原始網站的網站原始碼if那一段也是\u6708這樣顯示
付上處理的網站 http://lvyou.baidu.com/taibei/
推 CaptainH: 一樓 我想他的意思是html raw text 的\UXXXX 06/16 14:50
是的,那段一直無法解碼成中文
這方法有試過了,還是無法
※ 編輯: allan80625 (118.163.62.150), 06/16/2016 20:17:45
→ qwertmn: 其實你已經找到答案了啊~ 他就是json string 06/16 21:34
→ qwertmn: json.loads(r'"10\u6708-11\u6708"') 06/16 21:35
→ qwertmn: 另外就是 uranusjr 的方法也是可以work 的喔~ 06/16 21:39
→ qwertmn: 恩- - 他是js 的dict.. 不是json 沒看仔細XDDDD 06/16 21:45
→ qwertmn: 不過忘了說, 如果你用json or unicode-escape 都沒辦法處 06/16 23:35
→ qwertmn: 理, 那應該是系統問題了~ 我自己試都可以 06/16 23:36
→ s860134: 這問題沒那麼難懂... 你看到 \u6708 的字串在 python 中 06/17 02:28
→ s860134: 是因為 你輸入'\u6708' \u被視為 unicode 的 prefix 06/17 02:30
→ s860134: 所以她自然會把他轉成你看到的 10月 06/17 02:30
→ s860134: 但是網頁原始碼中是真正寫著 "\u6708" 6個字 06/17 02:33
→ s860134: 從檔案讀進 python 顯示應該是 '\\u6708' 06/17 02:35
→ s860134: '\\' 代表單斜線,python 字串中單個 \ 是跳脫字元 06/17 02:36
→ s860134: 簡單來說 print("\u6708")→月,print("\\u6708")→\u6708 06/17 02:48
→ s860134: len('\u6708') == 1 , len('\\u6708') == 7 06/17 02:56
→ s860134: 打錯 len('\\u6708') == 6 06/17 02:56
→ s860134: chr(int('6708',16)) == '\u6708' 06/17 03:07
感謝,成功了,真的是因為兩個斜線的問題
後來我用json.dumps(besttime,ensure_ascii=False)
print出來發現是\\u什麼的 所以我又在後面replace(兩個斜線,一個斜線)
再用json.loads就可以了
abc = json.dumps(besttime,ensure_ascii=False).replace('\\\\','\\')
aaa = json.loads(abc)
print(aaa) 成功!!
謝謝大家^^
※ 編輯: allan80625 (118.163.62.150), 06/17/2016 10:15:19