一枚丶学渣 发表于 2020-8-2 15:47:49

python

求大佬指点这个怎么解决

Traceback (most recent call last):
File "F:\python\py\000.py", line 7, in <module>
    for el in f:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 54: illegal multibyte sequence

zltzlt 发表于 2020-8-2 15:48:10

看报错信息应该是编码的问题。

建议发完整代码,方便别人修改,不要只发报错信息

Twilight6 发表于 2020-8-2 15:48:24

本帖最后由 Twilight6 于 2020-8-2 15:50 编辑




在你的 open 函数加上 encoding = 'UTF-8' 试试看

如果不行,那么就将你要打开的 txt 文本重新另存为下,改下编码格式即可:

https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg

https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg

https://xxx.ilovefishc.com/forum/202006/22/222937li4vv400i6v44b6z.png


sunrise085 发表于 2020-8-2 15:48:43

文件打开的时候open中添加一个参数 encoding='utf-8'

一枚丶学渣 发表于 2020-8-2 15:50:04

zltzlt 发表于 2020-8-2 15:48
看报错信息应该是编码的问题。

建议发完整代码,方便别人修改,不要只发报错信息

f = open("F:/python/txt/lt.txt")

me=[]
it=[]
count=1

for el in f:
    if el[:4] != '====':
      (role, ls)=el(':',1)
      if role == 'A':
            me.append(ls)
      if role == 'B':
            it.append(ls)
    else:
      fnm='me_' + str(count) + '.txt'
      fni='it_' + str(count) + '.txt'

      mf = open(fnm,'w')
      ife = open(fni,'w')

      mf.writelines(me)
      itf.writelines(it)

      mf.close()
      ife.close()

      me=[]
      it=[]
      count += 1
      
f.close()

zltzlt 发表于 2020-8-2 15:50:58

一枚丶学渣 发表于 2020-8-2 15:50
f = open("F:/python/txt/lt.txt")

me=[]


这样试试:f = open("F:/python/txt/lt.txt", encoding='utf-8')

me=[]
it=[]
count=1

for el in f:
    if el[:4] != '====':
      (role, ls)=el(':',1)
      if role == 'A':
            me.append(ls)
      if role == 'B':
            it.append(ls)
    else:
      fnm='me_' + str(count) + '.txt'
      fni='it_' + str(count) + '.txt'

      mf = open(fnm,'w')
      ife = open(fni,'w')

      mf.writelines(me)
      itf.writelines(it)

      mf.close()
      ife.close()

      me=[]
      it=[]
      count += 1
      
f.close()

Twilight6 发表于 2020-8-2 15:53:10

本帖最后由 Twilight6 于 2020-8-2 15:55 编辑

一枚丶学渣 发表于 2020-8-2 15:50
f = open("F:/python/txt/lt.txt")

me=[]




代码里面有几个变量名打错了

还有建议你将代码中的冒号统一为英文或者中文的 冒号字符,否则还是会报错


f = open("F:/python/txt/lt.txt",encoding='utf-8')

me = []
it = []
count = 1

for el in f:
    if el[:4] != '====':
      (role, ls) = el.split(':', 1)   # 这里根据文本中冒号来进行更改中文冒号,还是英文
      if role == 'A':
            me.append(ls)
      if role == 'B':
            it.append(ls)
    else:
      fnm = 'me_' + str(count) + '.txt'
      fni = 'it_' + str(count) + '.txt'

      mf = open(fnm, 'w',encoding='utf-8')
      ife = open(fni, 'w',encoding='utf-8')

      mf.writelines(me)
      ife.writelines(it)

      mf.close()
      ife.close()

      me = []
      it = []
      count += 1

f.close()

一枚丶学渣 发表于 2020-8-2 15:53:23

感谢各位大佬的帮助

Twilight6 发表于 2020-8-2 16:00:01

一枚丶学渣 发表于 2020-8-2 15:53
感谢各位大佬的帮助

问题如果已经解决,记得设置下【最佳答案】
页: [1]
查看完整版本: python