我有一个CSON (Coffeescript )文件,看起来如下所示:
'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中获取行号,并替换下两个行号,但在我的一生中,我一直无法找到一种方法来编辑一个特定的行号。
(顺便提一句,我确实知道 library ,但是除了单行 JSON之外,我还无法让它输出任何其他东西,我宁愿把它保存在CSON中,因为我想要在一个长文件中保持可读性,并且不想搅乱用户的原始文件)。
发布于 2018-02-13 01:48:43
好吧,我又一次回答了我自己的问题。它可能不是最有效率或最优雅的,但在这里:
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中非常重要,因此,检查您要用原始空格替换它们是否与原始空间匹配是至关重要的。如果你能想出更好的解决方案/改进办法,请告诉我:)我全是耳朵(也许是眼睛)
演职人员:
https://stackoverflow.com/questions/48738131
复制相似问题