我是python的新手,因此我无法实现我在网上找到的解决方案来解决我的问题。 我正在尝试将特定字符串添加到文本文件的特定行的末尾。据我了解的文本命令,如果我不想附加到文件末尾,则必须覆盖该文件。因此,我的解决方案如下:
ans = 'test'
numdef = ['H',2]
f = open(textfile, 'r')
lines = f.readlines()
f.close()
f = open(textfile, 'w')
f.write('')
f.close()
f = open(textfile, 'a')
for line in lines:
if int(line[0]) == numdef[1]:
if str(line[2]) == numdef[0]:
k = ans+ line
f.write(k)
else:
f.write(line)
基本上,我试图将变量ans
添加到特定行的末尾,该行出现在列表numdef
中。例如,对于
2小时:4,0:在哪里搜索信息:谷歌
我想要
2小时:4,0:在哪里搜索信息:谷歌测试
我也尝试使用line.insert()
,但无济于事。
我知道在这里使用open命令的'a'功能不是那么相关和有用,但是我没有主意。可能会喜欢此代码的提示,或者如果我应该废弃它并重新考虑整个问题。 谢谢您的时间和建议!
答案 0 :(得分:1)
尝试一下。如果满足第一个条件,则没有其他情况。
ans = 'test'
numdef = ['H',2]
f = open(textfile, 'r')
lines = f.readlines()
f.close()
f = open(textfile, 'w')
f.write('')
f.close()
f = open(textfile, 'a')
for line in lines:
if int(line[0]) == numdef[1] and str(line[2]) == numdef[0]:
k = line.replace('\n','')+ans
f.write(k)
else:
f.write(line)
f.close()
更好的方式:
#initialize variables
ans = 'test'
numdef = ['H',2]
#open file in read mode, add lines into lines
with open(textfile, 'r') as f:
lines=f.readlines()
#open file in write mode, override everything
with open(textfile, 'w') as f:
#in the list comprehension, loop through each line in lines, if both of the conditions are true, then take the line, remove all newlines, and add ans. Otherwise, remove all the newlines and don't add anything. Then combine the list into a string with newlines as separators ('\n'.join), and write this string to the file.
f.write('\n'.join([line.replace('\n','')+ans if int(line[0]) == numdef[1] and str(line[2]) == numdef[0] else line.replace('\n','') for line in lines]))
答案 1 :(得分:1)
使用该方法时
lines = f.readlines()
Python会在每行末尾自动添加“ \ n”。
尝试代替:
k = line + ans
以下内容:
k = line.rstrip('\n') + ans
祝你好运!