1

配列をファイルに保存する方法を知りたいです。あなたはすでに私を大いに助けてくれましたが、もっと単純な質問があります (私は Python が初めてです):

@<TRIPOS>MOLECULE 
NAME123 
line3 
line4 
line5 
line6 
@<TRIPOS>MOLECULE 
NAME434543 
line3 
line4 
line5 
@<TRIPOS>MOLECULE 
NAME343566 
line3 
line4 

私は現在このコードを持っていますが、配列の最後の項目items_grepのみを保存し、 . これを修正する方法は?

items = []
with open("test.txt", mode="r") as itemfile: 
    for line in itemfile: 
        if line.startswith("@<TRIPOS>MOLECULE"): 
            items.append([]) 
            items[-1].append(line) 
        else: 
            items[-1].append(line)      
#
# list to grep
items_grep = open("list.txt", mode="r").readlines()
# writing files
for i in items:
    if i[1] in items_grep:
        open("grep.txt", mode="w").write("".join(i))

前もって感謝します!

4

1 に答える 1

1

ファイルが最後の値のみを表示する理由は、フラグを使用してファイルを開くたびにw、既存のファイルが消去されるためです。一度開いてからファイルオブジェクトを使用すれば、問題ないので、そうするでしょう(注意してください、これは非常にきれいな/ Pythonicな方法ではなく、openコマンドがどのように機能するかを明確にするだけです)

myfile = open("grep.txt", "w")
for i in ...
    if i[1] ...:
         myfile.write(i + '\n')

これを処理する簡単な方法は、最初にリスト内包表記を実行してから結合することです。次に例を示します。

newstr = '\n'.join([''.join(i) for i in items if i[1] in items_grep])

次に、文字列全体を一度にファイルに書き込みます。間にアイテムを追加し\nないと、各アイテムが新しい行に配置されることはなく、スペースなしですべてが次々に追加されることに注意してください。

withまた、キーワードを使用してファイルを自動的に閉じることも検討する必要があります。

with open("grep.txt","w") as f:
    f.write(newstr)
于 2012-06-12T22:37:37.820 に答える