我从一个文件中读到了这样的一行:
小大事: 163 Wege zur Spitzenleistung (Dein Leben) (德文版)(彼得斯,汤姆) 迪尔·卡塔斯托普:那么führen Sie Teamsüber Distanz zur Spitzenleistung (德文版) (Thomas,Gary)
我阅读/编码它们:
title = line.encode('utf8')但产出如下:
贝德·卡塔斯托普:那么f\xc3\xbchren Sie Teams \xbcber zur Spitzenleistung (德文版) (Thomas,Gary)‘ 小大事: 163 Wege zur Spitzenleistung (Dein Leben) (德文版)(彼得斯,汤姆)
为什么“b”总是加起来?如何正确地读取文件,以保存"Umlauts“?
以下是完整的相关代码片段:
# 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谢谢
发布于 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并读取即可。如果文件编码不是系统默认值,则可以将其作为关键字参数传递:
with open(filename, encoding='utf8') as f:
line = f.readline()https://stackoverflow.com/questions/37773489
复制相似问题