python如何基于单词添加适当的缩进

时间:2018-03-31 03:07:38

标签: python

我正在将一个json文件写入键值属性文件:

Json示例:

{
   "id":"0",
   "meta":"down",
   "type":"1",
   "direction":"0",
   "interval":"1800"
}

并且需要像下面那样编写文件(需要匹配缩进):

id               = 0      
meta             = down   
type             = 1      
direction        = 0      
interval         = 1800   

现在,在转储json之后,我正在替换文本,这很好。但我无法得到适当的缩进。以下是我的代码和输出:

def updateConfigFile(filename):

    with open(filename, 'U') as f:

       newText=f.read()
       while ':' in newText:
          newText=newText.replace(':', '        = ')

   while ',' in newText:
      newText=newText.replace(',', '   ')          

with open(filename, "w") as f:
   f.write(newText)   

输出:

direction        =  0    
  stallTimeout        =  60    
  description        =  down    
  rampTime        =  4    
  deepDepth        =  14    
  deepWindow        =  5   
  id  = 1

如何实现适当的缩进?感谢

1 个答案:

答案 0 :(得分:1)

您应该将JSON处理为JSON,而不是原始文本。特别是,您不应该依赖JSON文件的某些特殊格式。

从此以后,我假设这是你的json文件的内容:

{"id":"0", "meta": "down", "type": "1", "direction": "0", "interval":"1800"}

保存在exampleJson.json下。

您可以将json转换为格式正确的字符串,如下所示:

import json

def configFileToString(filename):
  with open(filename, 'r') as f:
    j = json.load(f)
    return "\n".join(["%-20s= %s" % (k, j[k]) for k in j])  

print(configFileToString("exampleJson.json"))

它产生以下字符串:

id                  = 0
meta                = down
type                = 1
direction           = 0
interval            = 1800

关键部分是"%-20s= %s" - 格式字符串。 %-20s表示:填充宽度为20,左对齐。

我希望将此字符串保存到文件应该不是问题。