在字典列表中附加dictionary会在关键字周围加上双引号

2024-10-01 15:43:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想完成:
将词典附加到现有词典列表并更新新词典中的值。在

我的问题是: 当我在字典中读到.yamlrobotframework时,在关键字和值周围加上了双qout,如下所示。在

在我的山里

Vlan2: { u'IP': u'1.1.1.1', 
         u'DNS': {u'SN': u's2', u'PN': u's1'}, 
         u'SRoute': [{u'IF': u'eth0', u'Mask': u'0.0.0.0'}]
       }

但当我这么做的时候

^{pr2}$

我登录控制台

Log To Console  ${Vlan2}

我明白了

[{ "u'IP'": "u'1.1.1.1'", 
   u'IP': '2.2.2.2', 
   "u'DNS'": {"u'SN'": "u's2'", "u'PN'": "u's1'"}, 
   "u'SRoute'": [{"u'IF'": "u'eth0'", "u'Mask'": "u'0.0.0.0'"}]
 }]

我认为这是因为Robot框架在从.yaml中读取值时添加了双qoutes,导致它显示为不同的关键字,但我无法找到解决方法。在

最好避免两个qoute一起出现,因为信息的JSON是基于.yaml的单qoute。在

感谢任何帮助!在


Tags: ipyamlifdnsmask关键字词典s2
1条回答
网友
1楼 · 发布于 2024-10-01 15:43:47

这里有很多混乱。你的山药的这一部分:

{ u'IP': u'1.1.1.1', 

启动一个映射({)并给出一个键值对。键和值都是标量。第一个标量以u开头,在键指示符(:)之前结束,因此标量的内容是u'IP'。请注意,这可能不是您想要的,因为您会说:

since the JSON the info is going to is single qoute based as in the .yaml.

您似乎认为您在YAML中使用单引号标量,而实际上,您使用的是未引号标量。在YAML中,如果标量不是以引号('")开头的,那么它就是一个普通标量,它内部的引号将被解析为内容。标量以一个u开始,使它们成为无引号标量。你的山药应该是这样的:

^{pr2}$

另一个需要记住的重要事项是,当加载到Python中时,标量的表示样式将丢失——如果在YAML文件中使用单引号、双引号或不带引号,则不会产生任何影响。在

现在让我们看看输出:这里,字符串以文本形式表示。这意味着它们是以某种方式引用的。表示"u'IP'"与您的输入完全匹配,双引号是添加到字符串中的而不是;它们只是用来告诉您封闭的字符组成字符串。在

然后在输出中有这样的表示:u'IP'。这仍然是一个带引号的字符串,只是前面有一个u的Python特定表示表示这是一个unicode字符串,其内容是IPu为前缀的表示法在YAML中不存在,这就是您的输入不能正常工作的原因。在YAML中,所有输入都是unicode,通常编码为UTF-8。输出中的u'IP'是您用代码设置的IP值。因为它不匹配任何现有的dict键(如前所述,原始键的内容是u'IP',在输出中表示为"u'IP'"),所以它被添加为dict的附加键

相关问题 更多 >

    热门问题