1

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

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

4

3 回答 3

6

问题是输入后面没有逗号ATOM,所以word[0]不等于ATOM. 您应该按空格而不是逗号分隔。

你也可以split()不带参数使用。

由于您仅output.write在找到匹配项时才执行此操作,因此输出保持为空。

withPS打开文件时尽量使用语句:

with open('SECOND_orbitsJ22.txt','r') as input,
    open('SECOND_orbitsJ22_out.txt','w') as output:
   ...

此外,Alexander 建议了正确的替换工具:str.replace. 但是,请谨慎使用它,因为它不是位置感知的。re.sub是一种更灵活的选择。

于 2012-06-22T21:17:51.887 回答
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)

工作示例

于 2012-06-22T21:19:13.540 回答
1

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

于 2012-06-22T21:18:43.627 回答