import csv
import json
raw = '''\
name {
first_name: "random"
}
addresses {
location {
locality: "India"
street_address: "xyz"
postal_code: "300092"
full_address: "street 1 , abc,India"
}
}
projects {
url: "www.githib.com"
}
'''.splitlines()
# A stack to hold the parsed objects
stack = [{}]
reader = csv.reader(raw, delimiter=' ', skipinitialspace=True)
for row in reader:
#print(row)
key = row[0]
if key == '}':
# The end of the current object
stack.pop()
continue
val = row[-1]
if val == '{':
# A new subobject
stack[-1][key] = d = {}
stack.append(d)
else:
# A line of plain data
stack[-1][key] = val
# Convert to JSON
out = json.dumps(stack[0], indent=4)
print(out)
假设你的数据是
使用json.dumps将dict转换为json
^{pr2}$在标准库中没有将数据格式转换为JSON的简单方法,因此我们需要编写一个解析器。然而,由于数据格式相当简单,这并不难做到。我们可以使用标准的
csv
模块来读取数据。csv.reader
将正确处理解析空格和引用字符串的详细信息。带引号的字符串将被视为单个标记,由单个单词组成的标记可以被引用,但不需要。在csv.reader
通常从打开的文件中获取数据,但它的用途非常广泛,还可以从字符串列表中读取数据。这在测试时非常方便,因为我们可以将输入数据嵌入到脚本中。在我们把数据解析成一个嵌套字典。跟踪嵌套的一个简单方法是使用堆栈,我们可以使用普通列表作为堆栈。在
下面的代码假定输入行可以是以下三种形式之一:
{
结尾。在}
输出
^{pr2}$相关问题 更多 >
编程相关推荐