[英]Find a string in a file and replace the next lines
我有一个CSON
(咖啡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
的性质, CSON
缩进敏感。
我曾考虑过要从specialKey
获取行号并替换下两个行号,但是对于我来说,我一直无法找到一种在Python中按数字编辑特定行的方法。
(作为一个旁注,我pycson
了解pycson
库,但是除了单行JSON
,我无法让它输出其他任何内容,我希望将其保存在CSON中,因为我想长期保持可读性文件,并且不想弄乱用户的原始文件。)
好吧,我再次回答了我自己的问题。 它可能不是最高效或最优雅的,但它是:
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
中非常重要, CSON
在Python中一样,因此,至关重要的是要检查您要替换的空格是否与CSON
空格匹配 如果您能想到对此更好的解决方案/改进,请让我知道:)我全是耳朵(或眼睛)
学分:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.