如何用Python编辑文本文件?

2024-06-01 13:48:14 发布

您现在位置:Python中文网/ 问答频道 /正文

text = open('samiam.txt', 'r+')
keyword = " i "
keyword2 = "-i-"
replacement = " I "
replacement2 = "-I-"

for line in text:    
    if keyword in line:
        text.write(line.replace(keyword, replacement))
        print line
    elif keyword2 in line:
        text.write(line.replace(keyword2, replacement2))
        print line
    else:
        print line
text.close()

我不完全确定为什么文本没有写入文件。帮忙?


Tags: textintxtforiflineopenkeyword
3条回答

使用^{} module。(另请参见the MOTW site。)

import fileinput
keyword1 = " i "
keyword2 = "-i-"
replacement1 = " I "
replacement2 = "-I-"
for line in fileinput.input('your.file', inplace=True):
    line = line.rstrip()
    if keyword1 in line:
        line = line.replace(keyword1, replacement1)
    elif keyword2 in line:
        line = line.replace(keyword2, replacement2)
    print line

使用inplace选项时,fileinput模块重命名输入文件并将stdout重定向到具有原始文件名的新文件

如果要保留每行右侧的空白,请不要rstrip,并使用print line,(注意最后的逗号)输出处理过的行。

这是因为你想同时读和写。尝试以下方法:

# Read operation
lines = []
for line in text.readlines():
    if keyword in line:
        lines.append(line.replace(keyword, replacement))
        print line
    elif keyword2 in line:
        lines.append(line.replace(keyword2, replacement2))
        print line
    else:
        lines.append(line)
        print line
text.close()

# Write operation
text = open('dummy.py', 'w+')
text.writelines(lines)
text.close()

奖金:

with open('data.txt') as f:
     data = f.read()

更像是Python。

在你的代码中只需替换这一行

for line in text:

for line in text.readlines():

注意,这里我假设您正试图在文件末尾添加输出。一旦您读取了整个文件,文件指针就位于文件的末尾(即使您以r+模式打开了该文件)。因此,写操作实际上会写到文件的末尾,在当前内容之后。

您可以通过在不同的行嵌入text.tell()来检查文件指针。

下面是另一种方法:

with open("file","r") as file: 
    text=file.readlines() 
i=0 
while i < len(text): 
    if keyword in text[i]: 
        text[i]=text[i].replace(keywork,replacement) 
with open("file","w") as file: 
    file.writelines(text)

相关问题 更多 >