在 python 中将 txt 转换为 json

Converting txt to json in python

我对 json 和 python 中的文本文件有疑问。

我有一个带有 cookie 的 .txt 文件,我有大约 11 个,但我只会显示 2 个。 我需要将它们转换为 .json 文件,以便我可以将它们放入 post 请求的 headers 请求中。

这是 .txt 中的 cookie

Set-Cookie3: X-APPLE-WEBAUTH-PCS-Mail="\"TGlzdEFwcGw6MTpBcHBsOjE6AZInfMKt5IWY2iftwASOV2SUGxMMn0ofLN6m6Tl5DsSBDGXPI2Uhfb7IkYx4GWgET2U5FJdBpxnvF1wGPEV2zKGC7UpT2CoDkBSZAGtIHzkmI6zjqXxGS/ObRGVSX4BuUaP6A2Tgt9CKVHzVZG8O+hA8dDxdCy513OkmNYLNRT8a5M7VnDGyqg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0
Set-Cookie4: X-APPLE-WEBAUTH-PCS-News="\"TGlzdEFwcGw6MTpBcHBsOjE6ARKs9FWrQDcrZGUYbHPO2e7Jux6aRGWLAZt4vjHFRLgqERXDD51hgI8ADM/A3SViCTgpnEfThOKn+rJ4rXRlkyQqq3ZPRdlieQI6g/FYs8RBm5Y0fCcFk5RAHq2VQIibURXAttOjyvVo3JHNuJ38zOmGaytYnSujeI6qFNrtep0YV7Ptq6lKcg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0

我希望它们看起来像这样

{
'Set-Cookie3': 'X-APPLE-WEBAUTH-PCS-Mail="\"TGlzdEFwcGw6MTpBcHBsOjE6AZInfMKt5IWY2iftwASOV2SUGxMMn0ofLN6m6Tl5DsSBDGXPI2Uhfb7IkYx4GWgET2U5FJdBpxnvF1wGPEV2zKGC7UpT2CoDkBSZAGtIHzkmI6zjqXxGS/ObRGVSX4BuUaP6A2Tgt9CKVHzVZG8O+hA8dDxdCy513OkmNYLNRT8a5M7VnDGyqg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0',
'Set-Cookie4': 'X-APPLE-WEBAUTH-PCS-News="\"TGlzdEFwcGw6MTpBcHBsOjE6ARKs9FWrQDcrZGUYbHPO2e7Jux6aRGWLAZt4vjHFRLgqERXDD51hgI8ADM/A3SViCTgpnEfThOKn+rJ4rXRlkyQqq3ZPRdlieQI6g/FYs8RBm5Y0fCcFk5RAHq2VQIibURXAttOjyvVo3JHNuJ38zOmGaytYnSujeI6qFNrtep0YV7Ptq6lKcg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0'
}

括号不必像那样,例如它们可以像这样。这样会好一些,同样很重要的是逗号

{'cookie': 'value', 'cookie': 'value'}

我尝试了很多解决方案,但其中很多都不起作用,例如。认为每个 cookie 都是不同的组,所以它们有不同的括号,或者只是引用冒号。 任何帮助都会得到帮助:)) 谢谢!

类似的东西应该可以工作:

with open("cookies.txt", "r") as f:  # don't forget to change the filename
    txt = f.readlines()
d = {line.split(":", maxsplit=1)[0]: line.split(":", maxsplit=1)[1].lstrip() for line in txt}

输出:

>>> print(d)
{'Set-Cookie3': 'X-APPLE-WEBAUTH-PCS-Mail="\"TGlzdEFwcGw6MTpBcHBsOjE6AZInfMKt5IWY2iftwASOV2SUGxMMn0ofLN6m6Tl5DsSBDGXPI2Uhfb7IkYx4GWgET2U5FJdBpxnvF1wGPEV2zKGC7UpT2CoDkBSZAGtIHzkmI6zjqXxGS/ObRGVSX4BuUaP6A2Tgt9CKVHzVZG8O+hA8dDxdCy513OkmNYLNRT8a5M7VnDGyqg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0\n', 'Set-Cookie4': 'X-APPLE-WEBAUTH-PCS-News="\"TGlzdEFwcGw6MTpBcHBsOjE6ARKs9FWrQDcrZGUYbHPO2e7Jux6aRGWLAZt4vjHFRLgqERXDD51hgI8ADM/A3SViCTgpnEfThOKn+rJ4rXRlkyQqq3ZPRdlieQI6g/FYs8RBm5Y0fCcFk5RAHq2VQIibURXAttOjyvVo3JHNuJ38zOmGaytYnSujeI6qFNrtep0YV7Ptq6lKcg==\""; path="/"; domain=".icloud.com"; path_spec; domain_dot; secure; expires="2022-06-14 13:29:15Z"; HttpOnly=None; version=0'}

请注意,正如其他人指出的那样,dict 中不能有相同的键。