我正在尝试读取 java 多行 i18n 属性文件。有这样的行:
messages.welcome=Hello\
World!
messages.bye=bye
使用此代码:
import configobj
properties = configobj.ConfigObj(propertyFileName)
但对于多行值,它会失败。
有什么建议么?
根据ConfigObj 文档 http://www.voidspace.org.uk/python/configobj.html#the-config-file-format, configobj
要求您将多行值括在三引号中:
包含换行符的值
(多行值)可以被包围
通过三重引号。这些也可以
如果一个值包含两种类型,则使用
引号。名单成员不能
用三引号括起来:
如果无法修改属性文件,我建议使用配置解析器 http://docs.python.org/dev/library/configparser.html:
在配置解析器中,值可以跨越
多行,只要它们是
缩进比所持有的键多
他们。默认情况下解析器还让
空行作为值的一部分。
这是概念的快速证明:
#!/usr/bin/env python
# coding: utf-8
from __future__ import print_function
try:
import ConfigParser as configparser
except ImportError:
import configparser
try:
import StringIO
except ImportError:
import io.StringIO as StringIO
test_ini = """
[some_section]
messages.welcome=Hello\
World
messages.bye=bye
"""
config = configparser.ConfigParser()
config.readfp(StringIO.StringIO(test_ini))
print(config.items('some_section'))
Output:
[('messages.welcome', '你好世界'),
('消息.再见', '再见')]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)