2012-01-12 92 views
2

测试代码:python ConfigParser模块如何将字符串“ r n”转换为CRLF?

import ConfigParser 
config = ConfigParser.ConfigParser() 
config.read('test_config.ini') 

orig_str = """line1\r\nline2""" 
config_str = config.get('General', 'orig_str') 
print orig_str == config_str 

和test_config.ini的内容是:

[General] 
orig_str = line1\r\nline2 

我要的是config_str可以是相同的值orig_str。

任何帮助,将不胜感激!

回答

2

如果要编写多行配置值,则只需在以下行的开始处预留一个空格。例如:

[General] 
orig_str = line1 
line2 

回报'line1\nline2'在我的OS(Linux)的,但也许在不同的操作系统可能会返回'\r'为好。否则,根据需要很容易将'\n'替换为'\r\n'

我想说,无论你用什么库来编码信息都应该照顾替换。无论如何,如果不是这样,你可以创建自己的ConfigParser如下:

from ConfigParser import ConfigParser 

class MyConfigParser(ConfigParser): 
    def get(self, section, option): 
     return ConfigParser.get(self, section, option).replace('\n', '\r\n') 

config = MyConfigParser() 
config.read('test_config.ini') 

orig_str = """line1\r\nline2""" 
config_str = config.get('General', 'orig_str') 
print orig_str == config_str # Prints True 
+0

感谢,但我需要的是“\ r \ n”,因为这个字符串是一个HTTP请求。 – pvd 2012-01-12 08:55:42

+1

@pvd如果你真的需要这样做,我已经添加了一个例子,其中'ConfigParser'子类实现了所需的功能。 – jcollado 2012-01-12 09:25:35