python - 文件操作、查找单词和棘手的替换

标签 python file replace

我有这样的文件

hostname ser1-xyz
myuser   name
passwd   secret
group    1234

hostname ser2-xyz
myuser   name
passwd   secret
group    2345

我需要找到名为“ser1-xyz”的主机第一次出现的行并将其修改为 “ser1”并将其组值增加 1

最终文件如下所示:

hostname ser1
myuser   name
passwd   secret
group    1235

hostname ser2-xyz
myuser   name
passwd   secret
group    2345

目前我正在跟踪代码,可以将“ser1-xyz”修改为“ser1”

        for line in fileinput.FileInput(fn,inplace=1):
                line = line.replace(search,replace)

但是如何增加团队值(value)呢?

最佳答案

单向

import fileinput
f=0
for line in fileinput.input("file",inplace=0):
    if "hostname" in line and "ser1-xyz" in line:
       line=line.replace("ser1-xyz","ser1")
       f=1
    if f and "group" in line:
       a=line.rstrip().split(" ")
       a[-1]=str(int(a[-1])+1)
       line=' '.join(a)
       f=0
    print line.rstrip()

输出

$ ./python.py
hostname ser1
myuser   name
passwd   secret
group    1235

hostname ser2-xyz
myuser   name
passwd   secret
group    2345

inplace=0 更改为 inplace=1 以进行就地编辑。

关于python - 文件操作、查找单词和棘手的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310014/

相关文章:

python - Windrose 图例括号格式和位置

python - 使用修改重写文件

python - 运行 flask 应用程序后调用函数的正确方法是什么?

string - Windows批处理文件-在文件中查找字符串并将其追加

java - 如何在Spring MVC中正确使用外部文件?

java - 如何重命名文件java?

Ruby:用其他散列中的匹配值交换散列键

regex - 用 sed 替换匹配的字符串

python - 如何在编译时从 C 扩展模块检查 python API 的版本?

python - 如何处理 Selenium 中的奇怪字符? 'utf8' 编解码器无法解码位置 0 中的字节 0xc3 :