伊莉討論區

標題: python讀檔怎麼轉dict呢? [打印本頁]

作者: 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嗎?謝謝><"

[code]def test_json():
        data1="文檔內容"
        #1#arti = open('1_.txt', 'r')
        #2#print arti.read()
        #3#data1 = arti.read()
        json_str = json.dumps(data1)
        data2 = json.loads(json_str)
        print data2['article_title']

[code/]


作者: snowflying    時間: 2018-3-4 01:48 AM


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

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

  1. import json

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

  4. print data2['article_id']
複製代碼




作者: eyny0426    時間: 2018-3-4 12:15 PM

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

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

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

補充內容 (2018-3-4 12:17 PM):
另外,請問一下,大大您的code那欄是怎麼打的?XD
作者: snowflying    時間: 2018-3-4 01:21 PM

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

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

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

  5. print data2['article_id']
複製代碼

作者: eyny0426    時間: 2018-3-4 03:43 PM

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

utf-8 BOM的問題我真的完全不知道...
終於能順利run出result惹!
不知道該怎麼感謝您的熱心幫忙?
實在是太感謝您了!!




歡迎光臨 伊莉討論區 (http://www10.eyny.com/) Powered by Discuz!