Crossin的编程教室

标题: 新人求助,文件读取写入报错“非法多字节序列” [打印本页]

作者: 张小宅    时间: 2016-10-4 18:40
标题: 新人求助,文件读取写入报错“非法多字节序列”
环境:win10 python34
代码:
  1. #!/usr/bin/python

  2. f_old = open("束星北档案.txt")
  3. f_new = open("束星北档案已转换.txt")
  4. x = f_old.readlines()
  5. type(x)
  6. for i in x:
  7.         if (len(x)<30) or ("。\n" in x) or ("!\n" in x) or ("?\n" in x) or ("……\n" in x) or ("-\n" in x)
  8.                 f_new.write(x)
  9.         else
  10.                 f_new.write(x.replace("\n",""))
  11. f_old.close()
  12. f_new.close()
  13. print("转换已完成")
复制代码
代码做用是删除 ".txt" 里面多余的换行符,因为要下载到kindle上面看,里面控制排版的换行符多余,所以写了上面这些代码
{
    一九七二年十月十七日,是我一九四六年去美国后第一次回国,国家领导人在

人民大会堂会见了我。周恩来总理希望我能为解决教育人才“断层”的问题做些工作,

如介绍一些海外有才学的人到中国来讲学等等。我谈了自己的一些看法,我说中国

不乏解决“断层”问题的人才和教师,只是他们没有得到使用。比如我的老师束星北

先生。

    那时我不知道束星北老师在哪里,在做什么,我很想能见他一面,可是最终未

能如愿。

    一个人的成功有着各种各样的因素,而这些因素又彼此关联。对于我一生的物

理学研究来说,束先生对我最初的帮助和影响是非常重要的。
}
作者: 张小宅    时间: 2016-10-4 18:47
下面这些是报错信息:
{
Traceback (most recent call last):
  File "G:\aaa\zh.py", line 5, in <module>
    x = f_old.readlines()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
}
表示英语学的太差,就去百度翻译了一下
{
Traceback(最后调用):
文件“G:\ AAA \ ZH .py”,5号线,在<模块>
x = f_old。readlines()
unicodedecodeerror:“GBK的编码不能在2位字节0xbf解码:非法多字节序列
}

虽然我还是不能看懂,,,
希望能得到大家的帮助,或者更好的方法建议
新人求助,不胜感激
作者: crossin先生    时间: 2016-10-5 19:36
文件里有字符是gbk编码没法处理的。你搜下python3如何指定打开文件的编码,改成utf8试试




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5