鱼C论坛

 找回密码
 立即注册
查看: 3478|回复: 10

[新手问题]gbk的文件怎么处理啊, 一直错

[复制链接]
发表于 2016-9-30 17:49:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dodopromi 于 2016-10-3 09:59 编辑

python的文件, 竟然自己能写一点用的着的挺开心.  不过步步是坑.  从语法, 到思路..

现在就是, 我要扫描一个文件中的gre单词, 并把他们打出来. 目前,我不知道怎么做
  1. f = open(r'C:\Documents and Settings\Administrator\桌面\学习\test\2.txt','r')
  2. f1=open(r'C:\Documents and Settings\Administrator\桌面\学习\test\new3.txt','w')
  3. gre=open(r'C:\Documents and Settings\Administrator\桌面\学习\test\gre.txt','r')

  4. gredic={}
  5. for each_line in gre:
  6.     gredic[each_line.split('\t\t')[0]]=each_line.split('\t\t')[-1]
  7. print(gredic)

  8.    
  9. for each_line in f:
  10.     words=each_line.split()   
  11.    
  12.     for each_word in words:
  13.         if each_word in gredic:
  14.             print(each_word,'是gre词汇')
  15.         
  16. f.close
  17. f1.close
  18. gre.close
复制代码


错误信息提示
Traceback (most recent call last):
  File "C:/Python34/插入词典.py", line 4, in <module>
    gredic=gre.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 9626: illegal multibyte sequence


关于编码问题,我倒腾好几次了,反反复复的把各个文件存成各种格式的,都没用

问题:
1  这个in position 9626是个什么东西, 为什么随着文件的变化, 一直在变化
2, 如果是个特殊的符号, 我能不能一次找到全部删掉,但是文本下面我看不到啊.
3, 而且file.seek(), 和file.tell() 时好时坏



字典gre长这个模样
abacus                  n.算盘                       
abandon                  v.n.放弃,放纵                       
abase                  v.贬抑,使卑下                       
abate                  v.减轻,降低                       
abattoir                  n.屠宰场,角斗场       


问题

我这种方式是不是会占据很大内存,让电脑执行的很慢, 正常思路是怎样的, 是应该建立数据库吗?  或是python还有其他的解决方案


好吧,我没说清楚,重新说.
现在我有一个gre.txt文件, 格式如上图字典
然后我有一个字幕文件, 格式如以下

21
打死它  abacus 杀了它

00:01:21,190 --> 00:01:22,710
Shoot anything that moves.
abate
救命

00:01:48,200 --> 00:01:49,540
He -- he got me.
abeyance


我最后希望呈现
21
打死它  abacus [abacus是gre词汇  n.算盘]杀了它

00:01:21,190 --> 00:01:22,710
Shoot anything that moves.
abate[abate是gre词汇  v.减轻,降低]
救命

00:01:48,200 --> 00:01:49,540
He -- he got me.
abeyance [abeyance是gre词汇  n.中止,暂搁]


就是加注解这么一个功能吧
ps

我不知道为什么, 一天都没人睬我, 是我态度不正确吗

额, 不会传附件, 如果已经上传, 请把后缀改为,txt
2.zip (160 Bytes, 下载次数: 0)

gre.zip (246.58 KB, 下载次数: 10)




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-1 05:15:57 | 显示全部楼层
没人睬我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-1 10:02:02 | 显示全部楼层

回帖奖励 +1 鱼币


不是很明白你到底要干嘛、、、哎 是不是我理解力太差了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-1 15:49:20 | 显示全部楼层
up
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-1 19:35:25 | 显示全部楼层

回帖奖励 +1 鱼币

in position就是出错点,也就是用gbk编码不能解码的地方。
你可以打开文件时用utf-8试试(对应编码就行),open('xxx', encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-2 17:37:48 | 显示全部楼层
wei_Y 发表于 2016-10-1 19:35
in position就是出错点,也就是用gbk编码不能解码的地方。
你可以打开文件时用utf-8试试(对应编码就行),o ...
  1. #-*- encoding:UTF-8 -*-
  2. import codecs
  3. f = open(r'C:\Documents and Settings\Administrator\桌面\test\2.txt','r',encoding='utf-8')
  4. f1=open(r'C:\Documents and Settings\Administrator\桌面\test\3.txt','w',encoding='utf-8')
  5. gre=open(r'C:\Documents and Settings\Administrator\桌面\test\gre.txt','r',encoding='utf-8')
复制代码


前面已经全部改为  utf-8  然后一段一段试都不行, 前面两段也看不懂,反正都往上怼

结果依旧
Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\桌面\test\找出文章中的gre词汇插入.py", line 11, in <module>
    for each_line in f:
  File "C:\Python34\lib\codecs.py", line 313, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 4: invalid start byte


大神,再帮我看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-2 17:42:33 | 显示全部楼层
@wei_Y, @冬雪雪冬, @hldh214, @shuofxz, @SixPy
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-2 17:51:02 | 显示全部楼层

回帖奖励 +1 鱼币

你把gre.txt也发上来,方便大家测试,看看问题出在哪里。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-2 18:02:35 | 显示全部楼层
冬雪雪冬 发表于 2016-10-2 17:51
你把gre.txt也发上来,方便大家测试,看看问题出在哪里。

上传了, 不是txt文件, 要把后缀由'zip'改成'txt'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-2 18:20:06 | 显示全部楼层
dodopromi 发表于 2016-10-2 18:02
上传了, 不是txt文件, 要把后缀由'zip'改成'txt'

我试了,加上utf-8是可以的。
  1. f = open('gre.txt', encoding = 'utf-8')
  2. for each in f:
  3.     print(each)
  4. f.close()
复制代码


未加utf-8
  1. Traceback (most recent call last):
  2.   File "D:\py\1.py", line 2, in <module>
  3.     for each in f:
  4. UnicodeDecodeError: 'gbk' codec can't decode byte 0x98 in position 22: illegal multibyte sequence
复制代码

加上utf-8
  1. abacus                  n.算盘

  2. abandon                  v.n.放弃,放纵

  3. abase                  v.贬抑,使卑下

  4. abate                  v.减轻,降低

  5. abattoir                  n.屠宰场,角斗场

复制代码

评分

参与人数 1鱼币 +2 收起 理由
dodopromi + 2 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-2 18:31:30 | 显示全部楼层
dodopromi 发表于 2016-10-2 17:37
前面已经全部改为  utf-8  然后一段一段试都不行, 前面两段也看不懂,反正都往上怼

结果依旧

可以另存为文件后选择不同编码试试。

评分

参与人数 1鱼币 +2 收起 理由
dodopromi + 2 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 02:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表