搜尋

首頁  >  問答  >  主體

python3.x - python使用json.loads的时候,字符串里有一行数据有问题,怎样让它略过这一行

import json
f_member = open(r'C:\Users\Desktop\xxxx.json')
users = json.loads(f_member.read(), encoding="utf8")

然后报错了
json.decoder.JSONDecodeError: Invalid control character at: line 388080 column 18 (char 4802144)

信息量很大,我不能手动去一条一条删这种吧...
如何略过这一行呢?

PHP中文网PHP中文网2887 天前568

全部回覆(1)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 17:31:48

    1) 嘗試用編解碼器的開放函數,讀取資料的時候可以指定讀出來的資料流編碼的方式

    雷雷
    1. The default file mode is ’r’ meaning to open the file in read mode.
      注意:包裝版本僅接受編解碼器定義的物件格式,即大多數內建解碼器的 Unicode 物件。輸出也依賴編解碼器,通常也是 Unicode。
      注意:即使未指定二進位模式,檔案也始終以二進位模式開啟。這樣做是為了避免

    2. 由於使用 8 位元值進行編碼而導致的損失。這意味著在讀寫時不會自動轉換 'n'。

    3. 指定檔案使用的編碼。

    4. 可以用來定義錯誤處理。它預設為“strict”,如果發生編碼錯誤,則會引發 ValueError。

    5. 與內建的 open() 函數具有相同的意義。預設為行緩衝

      2)json.loads裡的資料逐個字的判斷,非utf-8編碼的跳過去,得到完整的字串後再loads

    回覆
    0
  • 取消回覆