我希望能够转储一个字典,该字典包含我希望以块样式包含的长字符串,以提高可读性。例如:
foo: |
this is a
block literal
bar: >
this is a
folded block
PyYAML支持这种样式的文档加载,但是我似乎找不到找到这种方式转储文档的方法。我想念什么吗?
import yaml
class folded_unicode(unicode): pass
class literal_unicode(unicode): pass
def folded_unicode_representer(dumper, data):
return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='>')
def literal_unicode_representer(dumper, data):
return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|')
yaml.add_representer(folded_unicode, folded_unicode_representer)
yaml.add_representer(literal_unicode, literal_unicode_representer)
data = {
'literal':literal_unicode(
u'by hjw ___\n'
' __ /.-.\\\n'
' / )_____________\\\\ Y\n'
' /_ /=== == === === =\\ _\\_\n'
'( /)=== == === === == Y \\\n'
' `-------------------( o )\n'
' \\___/\n'),
'folded': folded_unicode(
u'It removes all ordinary curses from all equipped items. '
'Heavy or permanent curses are unaffected.\n')}
print yaml.dump(data)
结果:
folded: >
It removes all ordinary curses from all equipped items. Heavy or permanent curses
are unaffected.
literal: |
by hjw ___
__ /.-.\
/ )_____________\\ Y
/_ /=== == === === =\ _\_
( /)=== == === === == Y \
`-------------------( o )
\___/
为了完整起见,还应该有str实现,但是我会很懒惰:-)
问题内容: 我发现运行以下命令时,python的json模块(自2.6起包含)将int字典键转换为字符串。 有什么简单的方法可以将键保留为int,而无需在转储和加载时解析字符串。我相信可以使用json模块提供的钩子,但这仍然需要解析。我可能会忽略一个论点吗?欢呼声,查兹 子问题:感谢您的回答。看到json像我所担心的那样工作,是否有一种简单的方法可以通过解析转储的输出来传达密钥类型?我还要注意
问题内容: 我有一个名称为dash的现有python模块foo-bar.py 我希望避免更改模块名称,因为该模块是共享的,我将不得不追踪所有使用该模块的位置,以便我的特殊情况能够起作用。 有没有办法加载名称包含通常被禁止的“-”的模块? (我确实知道这不是最佳实践。但是,在这种情况下,我宁愿不要重新设计和测试更多的应用程序。而且,我不认为我的公司老板会赞成我花时间实施这样的变化。) 问题答案: 您
问题内容: 我想将字符串转换为最严格的数据类型:int或float。 我有两个字符串: 如何在Python中确定value1应该为Float,value2应该为Integer? 问题答案:
以下设置: 两个变量都表示语义相等的ID。由于应用程序是针对移动设备的,因此以最有效的方式进行这些变量的比较非常重要。 将这些变量与此代码片段进行比较是否有效, 还是用这个?
问题内容: 我正在为具有二进制文件的项目创建图表,该二进制文件在执行时会生成YAML格式的配置文件,如下所示: 我的图表需要读取该文件并将其所有值加载到容器中的环境变量中,因此我在文件中创建了一个变量,安装图表后,我使用以下命令传递文件内容: 接下来,我创建一个具有的值: 我遇到的问题是我需要使用以下值做两件事: 在所有键之前添加预定义的值(因此,在上面的示例中,我将其作为键) 确保所有值都是字符
问题内容: 我正在使用以下代码从外部程序获取标准输出: 方法返回一个字节数组: 但是,我想将输出作为普通的字符串使用。这样我就可以像这样打印它: 我认为这就是方法的用途,但是当我尝试使用它时,我又得到了相同的字节数组: 如何将字节值转换回字符串?我的意思是,使用”batteries”而不是手动进行操作。我希望它与Python 3兼容。 问题答案: 你需要解码bytes对象以产生一个字符串: