Python—在文件的特定行中的单词后添加字符串

Python—在文件的特定行中的单词后添加字符串,python,Python,我需要在文本文件的特定行中的单词后添加字符串。原始文件是: line 1: value1 line 2: value2 line 3: value3 line 4: value4 line 5: value5 例如,我想在第3行“line”之后添加“NAME”,这样文件将变成: line 1: value1 line 2: value2 line NAME 3: value3 line 4: value4 line 5: value5 你会怎么做? < P>我会考虑这个: with open

我需要在文本文件的特定行中的单词后添加字符串。原始文件是:

line 1: value1
line 2: value2
line 3: value3
line 4: value4
line 5: value5
例如,我想在第3行“line”之后添加“NAME”,这样文件将变成:

line 1: value1
line 2: value2
line NAME 3: value3
line 4: value4
line 5: value5
<>你会怎么做?

< P>我会考虑这个:

with open(file, 'r') as f:
    lines = []
    for line in f:
        split_lines = line.split(':')
        if split_lines[0].endswith('3') is True:
            lines.append(split_lines[0][:-1] + NAME + split_lines[1:])
        else:
            lines.append(line)
line_number = 3#I understood you know this. right ?
string_to_add = "NAME"#I understood you know this. right ?
string_to_find = "line"#I understood you know this. right ?
filename = "toto"
with open(filename,"r") as f:
    s = f.readlines()
s[line_number] = s[line_number].replace(string_to_find,string_to_find+string_to_add)
with open(filename,"w") as f:
    for line in s:
        f.write(line)
的确,它看起来效率很低(对于大文件来说可能不现实)。我很想看到更好的方法。

< P>我会考虑这一点:

line_number = 3#I understood you know this. right ?
string_to_add = "NAME"#I understood you know this. right ?
string_to_find = "line"#I understood you know this. right ?
filename = "toto"
with open(filename,"r") as f:
    s = f.readlines()
s[line_number] = s[line_number].replace(string_to_find,string_to_find+string_to_add)
with open(filename,"w") as f:
    for line in s:
        f.write(line)

的确,它看起来效率很低(对于大文件来说可能不现实)。我很想找到更好的方法。

这会查找以“第3行:”开头的行,只编辑这一行,保留其余行,并将文本写入新文件

with open('f1.txt', 'r') as f:
    lines = []
    for line in f:
        if line.startswith("line 3:"):
            split_line = line.split()
            split_line.insert(split_line.index("3:"), "NAME")
            lines.append(' '.join(split_line) + '\n')
        else:
            lines.append(line)

with open('f2.txt', 'w') as f:
    for line in lines:
        f.write(line)
当您运行下面的代码时

with open('f2.txt', 'r') as f:
    for line in f:
        print(line, end='')
它打印:

line 1: value1
line 2: value2
line NAME 3: value3
line 4: value4
line 5: value5

这将查找以“line 3:”开头的行,并仅编辑这一行,保留其余行,然后将文本写入新文件

with open('f1.txt', 'r') as f:
    lines = []
    for line in f:
        if line.startswith("line 3:"):
            split_line = line.split()
            split_line.insert(split_line.index("3:"), "NAME")
            lines.append(' '.join(split_line) + '\n')
        else:
            lines.append(line)

with open('f2.txt', 'w') as f:
    for line in lines:
        f.write(line)
当您运行下面的代码时

with open('f2.txt', 'r') as f:
    for line in f:
        print(line, end='')
它打印:

line 1: value1
line 2: value2
line NAME 3: value3
line 4: value4
line 5: value5

你在哪里重写文件?@Stéphane只需在写入模式下打开同一个文件,并在列表行中写入行。你在哪里重写文件?@Stéphane只需在写入模式下打开同一个文件,并在列表行中写入行。你能发布你的代码吗?你能发布你的代码吗?