为了在python3中使用json.loads()
函数,我需要将带有单引号的json行的文件转换为双引号。
我遇到的问题是:如果我将这些行视为字符串并使用.replace("'", '"')
函数,那么现在我刚刚引入的双引号将被视为该字符串的终止符。
我正在尝试转换:
{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}
进入:
{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}
是否可以将json.loads()
函数与单引号的json一起使用,还是有人知道有一个聪明的解决方法?
答案 0 :(得分:2)
也许json.dumps(your_string)
对您有用。
我运行了以下代码:
import json
txt_json = {'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}
print(json.dumps(txt_json))
输出为:
{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}
答案 1 :(得分:2)
您不能为此使用json。 Json需要双引号。如果您已经创建了字典并需要将其转换为JSON,则u / Gabriel Ataide的答案将起作用。
如果正在从这样的文件中读取它,或者将其作为字符串"{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}"
使用,并且想要从中创建字典,则必须像下面这样首先使用ast :
>>> import ast
>>> import json
>>> txt_json = "{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}"
>>> data = ast.literal_eval(txt_json)
>>> print(data)
{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}
>>> print(json.dumps(data))
{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}