如果我有这样的文件:
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"
但它无法匹配。 我想覆盖我正在阅读的文件
答案 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")