|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- f = open('E:\\pycharm\\测试\\record.txt','rb')
- boy=[]
- girl=[]
- count=1
- for each_line in f:
- if each_line[:6]!='======':#字符串分割操作
- (role,line_spoken)=each_line.split(':',1)
- (role,line_spoken)=each_line.split(':',1)
- if role=='小甲鱼':
- boy.append(line_spoken)
- if role=='小客服':
- girl.append(line_spoken)
- else:
- file_name_boy = 'boy_'+str(count)+'.txt'
- file_name_girl='girl_'+str(count)+'.txt'
- boy_file = open(file_name_boy,'w')
- girl_file=open(file_name_girl,'w')
- boy_file.writelines(boy)
- girl_file.writelines(girl)
- boy_file.close()
- girl_file.close()
- boy=[]
- girl=[]
- f.close()
复制代码
以上是代码
开始没有在open后面加‘rb’,会报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence
然后百度加入‘rb’可以解决,然后split就会报错:TypeError: a bytes-like object is required, not 'str'
文档里面的符号也都是英文的,求大神帮助
本帖最后由 jackz007 于 2020-2-29 13:24 编辑
这一句是完全错误的
- f = open('E:\\pycharm\\测试\\record.txt','rb')
复制代码
虽然这样在读取文件的时候不会出现问题,但是,'rb' 代表二进制读,从文件中读取到的内容都会被当作字节码,而不是文本字符来对待,字节码只有在被成功解析后才能得到文本字符,所以,绝对不可以用 'rb' 选项。
之前之所以不加 'rb' 会出错,多半是因为文本文件采用的不是 GBK 编码,而是 UTF-8 编码,导致在对字节码按照 GBK 编码进行解析的时候出现错误。所以,正确的选项应该是:
- f = open('E:\\pycharm\\测试\\record.txt' , encoding='UTF-8')
复制代码
楼主不妨一试
|
|