1

テキストファイル内の単語を値(たとえば1)に置き換えようとしていますが、出力ファイルが空白です。Pythonは初めてです(学習してからわずか1か月です)。

私のファイルは比較的大きいですが、今のところ単語を値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

最初にATOMという単語を値1に置き換えたいと思います。次に、#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一致するものが見つかった場合にのみ実行するため、出力は空のままになります。

PSwithファイルを開くときにステートメントを使用してみてください。

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 に答える