好吧,假设我有一个名为“string.txt”的字符串文本文件,我想将其转换为json文本文件。 我想做什么?我曾尝试使用'json.loads()',但它永远不适合我! 这是我的文本文件中的一部分:
rdian","id":"161428670566653"},{"category":"Retail and consumer merchandise","category_list":[{"id":"187937741228885","name":"Electronics Store"},{"id":"191969860827280","name":"Photographic Services & Equipment"}
有什么帮助吗? 编辑: 我使用了这段代码:
import json
f = open("string.txt", 'w')
f1 = open("stringJson.txt", 'r')
f.write(json.dumps(json.loads(f), indent=1))
f.close()
错误是这样的:
obj,end = self.raw_decode(s,idx = _w(s,0).end()) TypeError:期望的字符串或缓冲区
答案 0 :(得分:8)
import json
with open("string.txt", "rb") as fin:
content = json.load(fin)
with open("stringJson.txt", "wb") as fout:
json.dump(content, fout, indent=1)
答案 1 :(得分:1)
在这种情况下
您需要阅读文件的内容
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: expected string or buffer
import json f = open("string.txt", 'w') f1 = open("stringJson.txt", 'r') data = json.loads(f1) f.write(json.dumps(data, indent=1)) f.close()
答案 2 :(得分:0)
这实际上取决于txt
文件的结构。但是,假设您有一个结构化的txt
文件,如下所示:
BASE|30-06-2008|2007|2|projected
BASE|30-06-2007|2010|1|projected
BASE|30-06-2007|2009|3|projected
BASE|30-06-2007|2020|2|projected
...
您可以使用如下脚本:
import codecs
import json
import numpy as np
import pandas as pd
raw_filepath = "your_data.txt"
field_names = [
"Scenario",
"Date",
"Year",
"Quarter",
"Value"
]
data_array = np.genfromtxt(raw_filepath, delimiter="|", dtype=None, encoding="utf-8")
df = pd.DataFrame.from_records(data_array)
df.columns = field_names
result = df.to_json(orient="records")
parsed = json.loads(result)
out_json_path = "your_data.json"
### saves pandas dataframe in .json format
json.dump(
parsed, codecs.open(out_json_path, "w", encoding="utf-8"), sort_keys=False, indent=4
)
说明
要在Numpy中加载数据集,我们可以使用genfromtxt()
函数。我们可以指定数据文件名,定界符(这是可选的,但经常使用)以及如果有标题行时要跳过的行数。 genfromtxt()
函数具有一个名为dtype
的参数,用于指定每列的数据类型(此
参数是可选的)。如果不指定类型,则将所有类型都强制转换为更通用/更精确的类型,并且numpy将尝试
推断列的类型。
在这一部分df.to_json(orient="records")
中,我们正在使用“记录”格式的JSON对数据帧进行编码/解码。请注意,索引标签不会使用此编码保留。这样,我们可以像Pandas Documentation中所述获得这样的输出:
>>>result = df.to_json(orient="records")
>>>parsed = json.loads(result)
>>>json.dumps(parsed, indent=4)
[
{
"col 1": "a",
"col 2": "b"
},
{
"col 1": "c",
"col 2": "d"
}
]