我有一个文件看起来像这样:(...)- src: git+[server] name: main version: master- src: git+[server] name: sec version: master- src: git+[server] name: compiler version: master- src: git[server] name: libs version: master- src: git[server] name: crosscomp version: master(...)我只想在之后更改版本名称:主要和名称:秒所以我的想法是将整个文件逐行读入一个数组,并检查该行是否以 name: master 或 name: sec 开头。(与startswith())但是如何在找到后访问该行?
2 回答

慕虎7371278
TA贡献1802条经验 获得超4个赞
您可以成对处理这些行,并在找到匹配行时更新下一行。您需要在末尾用新行覆盖文件的内容。
with open(filename, 'r+') as f:
lines = f.readlines()
for i in range(len(lines)-1):
if 'name: main' in lines[i] or 'name: sec' in lines[i]:
lines[i+1] = lines[i+1].replace('master', 'newversion')
f.seek(0)
f.truncate()
f.writelines(lines)

噜噜哒
TA贡献1784条经验 获得超7个赞
maseterIndex = [i for i, x in enumerate(array) if x == "name: master"]
secIndex = [i for i, x in enumerate(array) if x == "name: sec"]
mergedlist = maseterIndex + secIndex
for index in mergedlist:
#do something with next line
print array[index+1]
添加回答
举报
0/150
提交
取消