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

全部回复(1)
大家讲道理

1) 试试用codecs的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.
    Note: The wrapped version will only accept the object format defined by the codecs, i.e. Unicode objects for most built-in codecs. Output is also codec-dependent and will usually be Unicode as well.
    Note: Files are always opened in binary mode, even if no binary mode was specified. This is done to avoid

  2. loss due to encodings using 8-bit values. This means that no automatic conversion of ’\n’ is done on reading and writing.

  3. specifies the encoding which is to be used for the file.

  4. may be given to define the error handling. It defaults to ’strict’ which causes a ValueError to be raised in case an encoding error occurs.

  5. has the same meaning as for the built-in open() function. It defaults to line buffered

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号