python3.x - python使用json.loads的时候,字符串里有一行数据有问题,怎样让它略过这一行
PHP中文网
PHP中文网 2017-04-17 17:29:48
0
1
566
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中文网

认证0级讲师

membalas semua(1)
大家讲道理

1) 试试用codec的open函数,读数据的时候可以指定读出来的数据流的编码方式

codecs.open(filename, mode[, encoding[, errors[, buffering ]]])
Open an encoded file using the given mode and return a wrapped version providing transparent encoding/
  1. The default file mode is ’r’ meaning to open the file in read mode.
    Nota: Versi yang dibalut hanya akan menerima format objek yang ditakrifkan oleh codec, iaitu objek Unicode untuk kebanyakan codec terbina dalam. Output juga bergantung kepada codec dan biasanya Unicode juga.
    Nota: Fail sentiasa dibuka dalam mod binari, walaupun tiada mod binari dinyatakan. Ini dilakukan untuk mengelakkan

  2. kehilangan akibat pengekodan menggunakan nilai 8-bit. Ini bermakna tiada penukaran automatik 'n' dilakukan semasa membaca dan menulis.

  3. menentukan pengekodan yang akan digunakan untuk fail.

  4. boleh diberikan untuk mentakrifkan pengendalian ralat. Ia lalai kepada 'ketat' yang menyebabkan ValueError dinaikkan sekiranya ralat pengekodan berlaku.

  5. mempunyai maksud yang sama seperti untuk fungsi open() terbina dalam. Ia lalai kepada baris buffered

    2) json.loads里的数据逐字符的判断,非utf-8编码的跳过去,得到完整的字符串后再>beban

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan