专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Python » sx出错怎么解决:在Python中解决中英文混杂出错的问题 »正文

sx出错怎么解决:在Python中解决中英文混杂出错的问题

来源: 发布时间:星期三, 2009年9月2日 浏览:54次 评论:0
  前两天用Python写了个小脚本其中有个需求是从个文本文件A中读取数据然后处理下写进个新文本文件B中不过A文件中既有英文也有中文

  写出处理这个需求代码并不复杂随手就能写下类似代码:

1def write_a_line(line, fp):
2    fp.write(line)


  不过这段旦碰到有汉字串时可能就会遇到下面问题:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:

ordinal not in range(128)


  恩这种情况对于我们平时使用C#或者Java员来说确实比较头大从这个提示来看Python在写文件时对line变量进行了编码操作而且是针对line对象进行ASCII码编码

  我们都知道Python是支持unicode而且还有针对unicode类型“unicode”要想让串称为unicode可以在引号前面加入个小写字母“u”翻阅Python文档我们可以发下write思路方法接收是str对象不过Python并不像C#它不用声明变量类型所以我们应该先看看line到底是个什么对象于是为了解决这个问题我把上面代码加了行:

1def write_a_line(line, fp):
2    pr line.____.__name__
3    fp.write(line)


  代码运行的后我发现当line中有中文时候我们line变量类型是unicode从网上搜了下和unicode和写文件相关帖子可以得到个信息对这unicode对象调encode思路方法进行编码就可以正常写文件了于是代码又编程了下面样子:

1def write_a_line(line, fp):
2     line.____.__name__  “unicode”:
3        line = line.encode(“GB2312”)
4    fp.write(line)


  这里要注意问题是不能棍子打死line可能会是unicode对象也可能是str对象不过我们只对unicode对象进行编码这下问题总算是解决了

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: