我想用行替换文件中的单词没有使用python我有一个行列表号?

时间:2018-04-18 05:58:27

标签: python list file

如果我有这样的文件:

Flower
Magnet
5001
100
0

我有一个包含行号的列表,我必须更改。

list =[2,3]

我如何使用python和我期望的输出:

Flower
Most
Most
100
0

我尝试过的代码:

f = open("your_file.txt","r")
line = f.readlines()[2]
print(line)
if line=="5001":
    print "yes"
else:
    print "no"

但它无法匹配。 我想覆盖我正在阅读的文件

2 个答案:

答案 0 :(得分:3)

您可以简单地遍历您必须在文件中替换的索引列表(我的原始答案不必要地循环遍历文件中的所有行):

with open('test.txt') as f:
  data = f.read().splitlines()
  replace = {1,2}
  for i in replace:
    data[i] = 'Most'
  print('\n'.join(data))

输出:

Flower
Most
Most
100
0

要覆盖使用替换项打开的文件,可以使用以下命令:

with open('test.txt', 'r+') as f:
  data = f.read().splitlines()
  replace = {1,2}
  for i in replace:
    data[i] = 'Most'
  f.seek(0)
  f.write('\n'.join(data))
  f.truncate()

答案 1 :(得分:0)

你遇到这个问题的原因是当你从python中打开的文件中取一行时,你也会在最后获得换行符(\n)。要解决此问题,您可以使用string.strip()功能,该功能会自动删除这些字符。

例如

f = open("your_file.txt","r")
line = f.readlines()

lineToCheck = line[2].strip()

if(lineToCheck == "5001"):
    print("yes")
else:
    print("no")