我有一个CSON
(Coffeescript JSON)文件,看起来像这样:
'main key':
subkey:
someKey: 'some value'
someKey: 'some value'
subkey:
someKey: 'some value'
someKey: 'some value'
specialKey: [
'special value X'
'special value Y'
]
subkey:
someKey: 'some value'
someKey: 'some value'
someKey: 'some value'
#And the list goes on and on...
所以我想找到并定位specialKey
并将special value X
和special value Y
替换为其他值,请记住,CSON
的性质是缩进敏感的
我已经考虑过从specialKey
获取行号并替换接下来的两行号码,但就我而言,我无法找到在Python中按编号编辑特定行的方法
(作为旁注,我知道pycson
library但是我无法输出除单行JSON
以外的任何内容,我宁愿保留在CSON中,因为我希望在长文件中保持可读性,并且不想弄乱用户的原始文件。)
答案 0 :(得分:0)
好的,我再次回答了自己的问题。它可能不是最有效或最优雅的,但它是:
from shutil import move
count = 0
with open('fileInput.cson') as fileIn, open('fileInput.cson.tmp', 'w') as fileOut:
for item in fileIn:
if count == 1:
item = " \'NEW special value Y\'\n"
count -= 1
if count == 2:
item = " \'NEW special value X\'\n"
count -= 1
if item.strip().startswith('specialKey:'):
count = 2
fileOut.write(item)
move('fileInput.cson.tmp', 'fileInput.cson')
要记住的一些事项:
CSON
中非常重要,因为它们在Python中,因此检查要替换它们的空格是否与原始空格相匹配至关重要如果你能想到对这个有更好的解决方案/改进,请告诉我:)我都是耳朵(或许是眼睛)
现金: