我的目录中有一百个文件。它们看起来像
abc def
ghi 123456
xyz
我想将123456
更改为XXXXXX
我不能使用正则表达式,因为字符串并不总是相同,但始终位于相同的索引处,并且长度始终相同
我在python 3.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"))
1-这将用修改后的文本替换整个文件
2- 123456
替换为XXXXXX6
(9:14是文件中的实际边界)
如何修复此脚本?
答案 0 :(得分:2)
要进行替换,只需编写:
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
不要添加它自己的字符,否则我们会得到文件各行之间的空白行。