我有一个文本文件,其中包含一些参数及其值。在python中解析后,将创建一个Dictionary。文本文件类似于:
Object1
House: Blue
Car: Red
Green
Garden: Big
Object2
House: Beatiful
Car: Nice
Garden: Small
在创建字典后,我还创建了一些块,这些块然后帮助我解析json文件中的所有内容。问题在于,“绿色”不是作为汽车的价值而是作为新对象被检测到的。因此,我想做的就是将“绿色”字符串向上移动一行,并得到一个像这样的文本文件。
Object1
House: Blue
Car: Red Green
Garden: Big
Object2
House: Beatiful
Car: Nice
Garden: Small
如何在Python中执行此操作?我当时在考虑使用正则表达式函数查找绿色,但我仍然不知道如何将其排列成一行。
代码段:
to_json = {}
answer = {}
block_cnt = 1
header = re.compile('[a-zA-Z0-9]')
inner = re.compile("[\t]")
empty = re.compile("[\n]",)
with open(output, 'r') as document:
for line in document:
#print line
if empty.match(line[0]):
continue
elif header.match(line[0]):
if answer:
to_json[block_cnt] = answer
#print answer
block_cnt += 1
answer = {}
elif inner.match(line[0]):
_key, value = line.split(": ")
tab, key = _key.split("\t")
answer[key] = value.strip("\n")
答案 0 :(得分:0)
问题:我当时正在考虑使用正则表达式函数来查找绿色,但我仍然不知道如何将其对齐。
您的一个错误是.match(line[0])
。
您与line
中的第一个字符匹配。
这不是您想要的,请更改为.match(line)
这将产生以下输出:
header:Object1 header:Green empty: header:Object2 {}
您的header = re.compile('[a-zA-Z0-9]')
也与Green
相匹配。
如何区分“绿色”和标题?
您的inner = re.compile("[\t]")
没有任何匹配。
我建议将elif inner.match(line):
更改为else: