代码之家  ›  专栏  ›  技术社区  ›  gyc

替换多个文件中索引处的字符串

  •  0
  • gyc  · 技术社区  · 7 年前

    我的目录里有一百个文件。他们看起来像

    abc def
    ghi 123456
    xyz
    

    我想改变 123456 XXXXXX 我不能使用正则表达式,因为字符串并不总是相同的,但它总是在相同的索引中,并且总是具有相同的长度

    我在python3.7中的尝试

    #!/usr/bin/python
    import fileinput
    import glob
    
    for filepath in glob.iglob('mydir/*.txt'):
        with fileinput.FileInput(filepath, inplace=True) as file:
            for index, line in enumerate(file):
                if index == 1:
                    print(line.replace(line[9:14], "XXXXXX"))
    

    123456 替换为 XXXXXX6

    如何修复此脚本?

    1 回复  |  直到 7 年前
        1
  •  2
  •   wizzwizz4    7 年前

    要进行替换,只需写下:

    print(line[:9] + "XXXXXX" + line[14:])
    

    别管这个了 str.replace ; 在这种情况下,它可能会导致意想不到的行为。

    6 因为切片不包含最终索引。


    for index, line in enumerate(file):
        if index == 1:
            line = line[:9] + "XXXXXX" + line[14:]
        print(line, end="")
    

    这个 end="" 是因为对文件中的行进行迭代 \n 字符,所以我们需要告诉 print