Python 3.1.3 我需要的是使用ConfigParser从cp1251文件中读取字典。 我的例子:
$s = "3.00";
$n = +$s;
var_dump( $n ); // float(3)
var_dump( is_float($n) ); // true
$s = "3";
$n = +$s;
var_dump( $n ); // int(3)
var_dump( is_float($n) ); // false
之后,我试图根据字典替换某些UTF-8文件中的某些单词。但有时它不起作用(例如,带有“新行回车”的符号)。 我的文件是UTF-8和CP1251中的配置文件(字典)。好像很麻烦,我必须将配置解码为UTF-8。 我试过这个:
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
但是出现了错误str1 = Dstr[0].encode('cp1251').decode('utf-8-sig')
。
如果我使用"'utf8' codec can't decode byte 0xcf in position 0"
- 我几乎失去了所有配置文件。
我该怎么办?
答案 0 :(得分:2)
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)