繁体   English   中英

Python 如何替换文本文件中特定行中的特定单词?

[英]Python How to replace a particular word in a particular line in a text file?

我是 Python 新手,如何替换 Python 文本文件中一行中的特定单词? 就像假设我有一个文本文件:

1 2 3 4 5
1 2 3 1 5

如何在 Python 的第二行中用4替换第二个1

我不知道你在看什么文件,也不知道它是否真的被解析过,但你似乎只是在学习 Python,所以这里有一些例子。

首先,您可以逐行读取文件,并用空格分割每一行。

>>> lines = [l.split() for l in open('foobar.txt').readlines()]
>>> lines
[['1', '2', '3', '4', '5'], ['1', '2', '3', '1', '5']]

所以现在我们有一个行列表,列表中的每一行都是一个单词列表。 我们可以操纵它,但我们认为合适。 例如,

>>> lines[1][3] = 999
>>> lines
[['1', '2', '3', '4', '5'], ['1', '2', '3', 999, '5']]

我们可以迭代每个单词和每一行:

>>> for line_number, line in enumerate(lines):
        for word_number, word in enumerate(line):
             print(f'Line {line_number}, word {word_number}: {word}')

Line 0, word 0: 1
Line 0, word 1: 2
Line 0, word 2: 3
Line 0, word 3: 4
Line 0, word 4: 5
Line 1, word 0: 1
Line 1, word 1: 2
Line 1, word 2: 3
Line 1, word 3: 999
Line 1, word 4: 5

您可以使用此解决方案按位置替换

s = list("1 2 3 1 5")
s[6]="4";
print("".join(s))

假设这个数据在 input.txt 中

file = open("input.txt",'r')
file_new=open("new_input.txt",'w+')
lines = file.readlines
linenumber=0
for line in lines:
    linenumber=linenumber+1
    if linenumber=2:

        line = str(line).replace('1','4')
    file_new.writelines(line)
file.close()
file_new.close()

new_input.txt 将第 2 行的 1 替换为 4

line = [l.split() for l in open('file.txt').readlines()]
lis = []
for i in line:
  if i not in lis:
    lis.append(i)
  elif i == 1:
    lis.append(4)
f = open('file.txt', 'w+')
for i in lis:
  f.write(i)
f.close()

首先读取文件内容,然后在列表理解部分拆分为列表。 当问题要求用 4 替换 1 的重复时,循环检查元素的重复。 非重复元素会直接添加到新列表lis 如果一个元素已经添加到 lis 中,并且它再次出现在line ,则意味着它被重复了。 现在,如果重复元素为 1,则将 4 附加到 lis,然后继续。 最后, lis包含替换后所需的文件内容。 file.txt在最后几行被 lis 内容覆盖。

这将替换最后一次出现的单词

with open("1.txt",'r+') as file:
    a=list(file.read())
    print(a)
    word=input("Enter the Word want to replace")
    repl=input("Enter the word you want to enter")
    index_list=[]
    for i in range(len(a)):
        if word==a[i]:
            index_list.append(i)
    a[int(index_list[-1])]=repl

with open("1.txt",'w') as file:

    for i in a:
            file.write(i)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM