我一直在尝试用一个值(比如1)替换文本文件中的单词,但我的outfile是空白的。我是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))
任何人都可以提供任何建议或帮助吗?非常感谢。
答案 0 :(得分:6)
问题是输入中ATOM
后没有逗号,因此word[0]
不等于ATOM
。你应该分裂空格而不是逗号。
您也可以在不带参数的情况下使用split()
。
由于您在找到匹配项时只执行output.write
,因此输出保持为空。
P.S。打开文件时尝试使用with
语句:
with open('SECOND_orbitsJ22.txt','r') as input,
open('SECOND_orbitsJ22_out.txt','w') as output:
...
此外,亚历山大建议使用正确的替换工具:str.replace
。但是,请谨慎使用它,因为它不是位置感知的。 re.sub
是一种更灵活的选择。
答案 1 :(得分:4)
使用replace
。
line.replace("ATOM", "1").replace("# ORB", " ")
未经测试的代码:
input = open('inp.txt', 'r')
output = open('out.txt', 'w')
clean = input.read().replace("ATOM", "1").replace("# ORB", " ")
output.write(clean)
答案 2 :(得分:1)
根据您在此处粘贴的文件段,您需要在空格上分割每一行,而不是逗号。如果没有逗号,则line.split(',')
无效,word[0]
为空。您的输出文件为空,因为您永远不会写入它,因为ATOM
永远不会等于空字符串。