我一直在尝试用一个值(比如 1)替换文本文件中的一个词,但我的输出文件是空白的。我是 python 的新手(我学习它才一个月)。
我的文件比较大,暂时只想替换一个值为1的单词。 这是该文件的一部分:
NAME SECOND_1
ATOM 1 6 0 0 0 # ORB 1
ATOM 2 2 0 12/24 0 # ORB 2
ATOM 3 2 12/24 0 0 # ORB 2
ATOM 4 2 0 0 4/24 # ORB 3
ATOM 5 2 0 0 20/24 # ORB 3
ATOM 6 2 0 0 8/24 # ORB 3
ATOM 7 2 0 0 16/24 # ORB 3
ATOM 8 6 0 0 12/24 # ORB 1
ATOM 9 2 12/24 0 12/24 # ORB 2
ATOM 10 2 0 12/24 12/24 # ORB 2
#1
#2
#3
我想先用值 1 替换单词 ATOM。接下来我想用空格替换 #ORB。到目前为止,这是我正在尝试的。
input = open('SECOND_orbitsJ22.txt','r')
output=open('SECOND_orbitsJ22_out.txt','w')
for line in input:
word=line.split(',')
if(word[0]=='ATOM'):
word[0]='1'
output.write(','.join(word))
任何人都可以提供任何建议或帮助吗?非常感谢。
请您参考如下方法:
问题是输入的 ATOM 后没有逗号,所以 word[0] 不等于 ATOM。您应该按空格而不是逗号拆分。
您也可以只使用不带参数的 split()。
因为您只在找到匹配项时执行 output.write,所以输出保持为空。
附言打开文件时尝试使用 with 语句:
with open('SECOND_orbitsJ22.txt','r') as input,
open('SECOND_orbitsJ22_out.txt','w') as output:
...
此外,Alexander 建议使用正确的替换工具:str.replace。但是,请谨慎使用它,因为它不具有位置感知能力。 re.sub 是一个更灵活的选择。
