繁体   English   中英

ConfigParser(Python)中的编码

[英]Encodings in ConfigParser (Python)

Python 3.1.3我需要的是使用ConfigParser从cp1251-file中读取字典。 我的例子:

config = configparser.ConfigParser()
config.optionxform = str
config.read("file.cfg")
DataStrings = config.items("DATA")
DataBase = dict()
for Dstr in DataStrings:
    str1 = Dstr[0]
    str2 = Dstr[1]
DataBase[str1] = str2

之后,我尝试根据字典替换一些UTF-8文件中的某些单词。 但有时它不起作用(例如,带有“换行符”的符号)。 我的文件位于UTF-8中,而配置文件(词典)位于CP1251中。 似乎很麻烦,我必须将config解码为UTF-8。 我已经尝试过了:

str1 = Dstr[0].encode('cp1251').decode('utf-8-sig')

但是出现错误"'utf8' codec can't decode byte 0xcf in position 0" 如果我使用.decode('','ignore') -我几乎会丢失所有配置文件。 我该怎么办?

Python 3.1处于Python版本的无人区。 理想情况下,您将升级到Python 3.5,这将允许您执行config.read("file.cfg", encoding="cp1251")

如果必须使用3.1x,则可以使用ConfigParser.readfp()方法以正确的编码从以前打开的文件中读取:

import configparser

config = configparser.ConfigParser()
config.optionxform = str
config_file = open("file.cfg", encoding="cp1251")
config.readfp(config_file)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM