使用python替换文本文件中的单词

时间:2012-06-22 21:14:34

标签: python python-3.x

我一直在尝试用一个值(比如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))

任何人都可以提供任何建议或帮助吗?非常感谢。

3 个答案:

答案 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)

Working example

答案 2 :(得分:1)

根据您在此处粘贴的文件段,您需要在空格上分割每一行,而不是逗号。如果没有逗号,则line.split(',')无效,word[0]为空。您的输出文件为空,因为您永远不会写入它,因为ATOM永远不会等于空字符串。