簡體   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