首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用.encode读取utf8行

用.encode读取utf8行
EN

Stack Overflow用户
提问于 2016-06-12 11:04:43
回答 1查看 18.9K关注 0票数 1

我从一个文件中读到了这样的一行:

小大事: 163 Wege zur Spitzenleistung (Dein Leben) (德文版)(彼得斯,汤姆) 迪尔·卡塔斯托普:那么führen Sie Teamsüber Distanz zur Spitzenleistung (德文版) (Thomas,Gary)

我阅读/编码它们:

代码语言:javascript
复制
title = line.encode('utf8')

但产出如下:

贝德·卡塔斯托普:那么f\xc3\xbchren Sie Teams \xbcber zur Spitzenleistung (德文版) (Thomas,Gary)‘ 小大事: 163 Wege zur Spitzenleistung (Dein Leben) (德文版)(彼得斯,汤姆)

为什么“b”总是加起来?如何正确地读取文件,以保存"Umlauts“?

以下是完整的相关代码片段:

代码语言:javascript
复制
# Parse the clippings.txt file
lines = [line.strip() for line in codecs.open(config['CLIPPINGS_FILE'], 'r', 'utf-8-sig')]
for line in lines:
    line_count = line_count + 1
    if (line_count == 1 or is_title == 1):
        # ASSERT: this is a title line
        #title = line.encode('ascii', 'ignore')
        title = line.encode('utf8')
        prev_title = 1
        is_title = 0
        note_type_result = note_type = l = l_result = location = ""
        continue

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-12 11:23:59

str.encode方法将unicode字符串转换为bytes对象:

str.encode(encoding="utf-8", errors="strict") 将字符串的编码版本作为字节对象返回。默认编码是'utf-8‘。在设置不同的错误处理方案时可能会出现错误。错误的缺省值是“严格的”,这意味着编码错误会引发UnicodeError。其他可能的值是“忽略”、“替换”、“xmlcharrefreplace”、“反斜杠替换”以及通过codecs.register_error()注册的任何其他名称,请参阅节错误处理程序。有关可能编码的列表,请参见“标准编码”部分。

所以你得到的正是人们所期望的。

在大多数机器上,您只需将文件open并读取即可。如果文件编码不是系统默认值,则可以将其作为关键字参数传递:

代码语言:javascript
复制
with open(filename, encoding='utf8') as f:
    line = f.readline()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37773489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档