查看完整版本: python讀檔怎麼轉dict呢?
頁: [1]

eyny0426 發表於 2018-3-4 12:22 AM

python讀檔怎麼轉dict呢?

本帖最後由 eyny0426 於 2018-3-4 12:25 AM 編輯

大大們您好:
目前的狀況是,我將ptt股版的文章爬下來了,如果我用data1="文檔內容",並且執行以下程式碼,確實能找出我想要的json資料。
但是改成以讀檔的方式,用#1#、#2#、#3#這三段取代「data1="文檔內容...」這段,就會跑出錯誤訊息(TypeError: string indices must be integers),其錯誤為讀進來的的字為str而非dict,目前我用過(import )simplejson也無法轉成dict,請問有什麼方法能將讀近來的檔案轉成dictionary嗎?謝謝>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

snowflying 發表於 2018-3-4 01:48 AM


文檔內容本來是個 dict
但是你放入 "",導致內容以 str 的形態存著
接著處理過程並沒有 eval 回去,所以形態一直是 str
簡單來說,"" 和 json.dumps 其中一個是多餘的

而且讀檔的話,直接用 json.load 就行了



import json

with open('1_.txt', 'r') as arti:
    data2 = json.load(arti, encoding='utf-8')

print data2['article_id']



eyny0426 發表於 2018-3-4 12:15 PM

snowflying 發表於 2018-3-4 01:48 AM static/image/common/back.gif
文檔內容本來是個 dict
但是你放入 "",導致內容以 str 的形態存著
接著處理過程並沒有 eval 回去,所以形 ...

謝謝大大您的回覆
但是,run了您的程式碼
卻出現錯誤訊息ValueError: No JSON object could be decoded
1_.txt明明就是json格式阿...
這問題到底出在哪...{:9:}

補充內容 (2018-3-4 12:16 PM):
可是 data="文檔內容"這一段run之後是沒問題的...

補充內容 (2018-3-4 12:17 PM):
另外,請問一下,大大您的code那欄是怎麼打的?XD...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

snowflying 發表於 2018-3-4 01:21 PM

eyny0426 發表於 2018-3-4 12:15 PM static/image/common/back.gif
謝謝大大您的回覆
但是,run了您的程式碼
卻出現錯誤訊息ValueError: No JSON object could be decoded


因為你的 1_.txt 有 utf-8 BOM
如果存的時候沒有 BOM 就沒那個問題了

import json
import codecs

with codecs.open('1_.txt', 'r', 'utf-8-sig') as arti:
    data2 = json.load(arti)

print data2['article_id']
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

eyny0426 發表於 2018-3-4 03:43 PM

snowflying 發表於 2018-3-4 01:21 PM static/image/common/back.gif
因為你的 1_.txt 有 utf-8 BOM
如果存的時候沒有 BOM 就沒那個問題了

utf-8 BOM的問題我真的完全不知道...{:9:}
終於能順利run出result惹!
不知道該怎麼感謝您的熱心幫忙?{:14:}
實在是太感謝您了!!{:17:}<br><br><br><br><br><div></div>
頁: [1]