而不是正常的换行符,就像我预期的那样只是打印'\ n'。如何让断线实际发生?
#main_nav:before,
#main_nav:after {
content: "";
display: table;
}
#main_nav {
zoom: 1;
list-style: none;
float: left;
margin: 0px 0px 0px 350px;
}
#main_nav li {
float: left;
position: relative;
padding: 0px 5px 0px 5px;
cursor: pointer;
}
#main_nav li a {
text-align: center;
}
#main_nav ul {
list-style: none;
width: 110px;
margin: 0px;
padding: 0px;
border: solid;
visibility: hidden;
position: absolute;
top: 50px;
left: 0px;
z-index: 1;
}
#main_nav li:hover > ul {
visibility: visible;
opacity: 1;
top: -3px;
}
#main_nav > li:hover {
border-bottom: solid red;
}
#main_nav >li:hover > ul {
top: 30px;
}
#main_nav ul ul {
left: 110px;
}
/* To make the first li higher */
#main_nav > li:after {
content: '';
position: absolute;
left: 0;
display: block;
width: 100%;
height: 20px;
}
/* To make the li's inside ul wider */
#main_nav ul > li:after {
content: '';
position: absolute;
top: 0;
right: -50px;
display: block;
width: 50px;
height: 20px;
}
答案 0 :(得分:2)
PyYAML中的dump()
例程有几个可选参数,第一个是将数据序列化为(stream=
)的流。
如果您没有指定此流,则会创建一个类似于对象的文件(StringIO()
或BytesIO()
),数据将被序列化,在这种情况下,dump()
例程会返回对象getvalue()
,通常只返回None
。
由于您没有指定输出流,PyYAML不知道在哪里写输出,并在您的情况下将getvalue()
的结果作为字符串返回。
如果您提供encoding=
参数,您将在Python 3上获得字节数组而不是字符串。
你当然可以print
那个字符串,但这是我看到人们使用PyYAML制作的最常见的错误之一。对于小型数据结构,这是可以原谅的,但对于大型数据结构,在内存中创建字符串表示会不必要地消耗大量内存。
你应该习惯提供stream参数:
>>> import yaml
>>> test2 = [{'A':['a', 'b']}, {'B':'b'}]
>>> yaml.dump(test2)
'- A: [a, b]\n- {B: b}\n'
>>> import sys
>>> yaml.dump(test2, stream=sys.stdout)
- A: [a, b]
- {B: b}
>>>
这也可以防止您在输出结尾处获得双重换行符(一个来自序列化,另一个来自print
)。
答案 1 :(得分:1)
您可以使用print
获取换行符。以这种方式在交互式提示中显示的字符串永远不会呈现换行符。您可以通过字符串周围显示的引号('
)来判断字符串的显示方式,这些字符串不会显示在print
中。
>>> test2 = [{'A':['a', 'b']}, {'B':'b'}]
>>> yaml.dump(test2)
'- A: [a, b]\n- {B: b}\n'
>>> print(yaml.dump(test2))
- A: [a, b]
- {B: b}
>>>