怎么才能在 Python 中输出一个 key 不带引号的字典呢

2022-09-01 16:19:58 +08:00
 mylifcc

或者说这是一个什么样的格式?

比如

{
city: "beijing",
device: "Iphone"
}
3883 次点击
所在节点    Python
37 条回复
JamesMackerel
2022-09-01 16:21:55 +08:00
可以先序列化再用正则替换一下?
westoy
2022-09-01 16:25:21 +08:00
js object

popen node.js console.log(json)
Hstar
2022-09-01 16:30:15 +08:00
这种格式只存在于代码中,city 和 device 是个变量引用。

输出做不到,非标格式。
caqiko
2022-09-01 16:32:33 +08:00
为什么要这样输出?这是 js 里的对象
yangg
2022-09-01 16:34:02 +08:00
yaml.dump ?
NessajCN
2022-09-01 16:41:00 +08:00
print("{")
for key in dict:
print(f'{key}:"{dict[key]",')
print("}")
lisongeee
2022-09-01 16:41:07 +08:00
ChrisFreeMan
2022-09-01 16:41:53 +08:00
找下有没有 json5 的库,json5 就是类似这种格式
mylifcc
2022-09-01 17:23:58 +08:00
@caqiko 源自一个笔试题,不知道怎么生成这种结构,也没查出来
mylifcc
2022-09-01 17:24:19 +08:00
@lisongeee
@ChrisFreeMan 感谢大佬
lanlanye
2022-09-01 17:28:23 +08:00
笔试题的话自己写个遍历打印不就好了吗?

>>> def pprint(dict_):
... print("{")
... for k, v in dict_.items():
... print(f' {k}: "{v}",')
... print("}")
...
>>> d = {'city': 'Beijing', 'device': 'iPhone'}
>>> pprint(d)
{
city: "Beijing",
device: "iPhone",
}
mylifcc
2022-09-01 17:49:40 +08:00
@lanlanye 主要是想了解怎么用 python 生成这种格式和这种格式是个啥
huangzhe8263
2022-09-01 18:22:16 +08:00
这就不是 python 里的标准格式吧
llsquaer
2022-09-01 18:52:09 +08:00
正则替换.
dic_str={'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
result=re.sub(r"'(.*?)': '(.*?)'" , "1\:\"\2\"", dic_str )
print(result)
ysc3839
2022-09-01 18:59:09 +08:00
自己写个遍历输出就完事了
@mylifcc 是 JavaScript(不是 JSON)的 object 格式
ysc3839
2022-09-01 19:09:32 +08:00
一句话的写法:
'{' + ', '.join((f'{k}: "{v}"' for k, v in t.items())) + '}'
没有考虑值中含有引号的转移,可以看规则自己改成 v.replace('"', '\\"')
wxf666
2022-09-01 19:12:12 +08:00
@JamesMackerel
@llsquaer

正则替换,要考虑不少东西的。比如:

1. 键值对里的值,不一定全是字符串,还可以是数字、列表、字典等

2. 就算是『"(.+?)"\s*:』,也有可能是『'"fake_key": value'』,序列化成『"\"fake_key\": value"』,然后被替换成『"\fake_key\": value 』了
mylifcc
2022-09-01 19:12:36 +08:00
@ysc3839 了解了
wxf666
2022-09-01 19:17:40 +08:00
@JamesMackerel
@llsquaer

写漏了

然后被替换成『"\fake_key\": value"』了
mmm159357456
2022-09-01 20:03:39 +08:00
不是啊,OP 要的是字典啊,你们推荐的全转换成 string 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX