2016-10-14 10 views
0

1つのファイルからデータを取り込み、2つのリストを作成して両方とも新しいファイルに書き込もうとしています。リストの1つに6文字以下の名前が含まれ、2番目のリストに「a」または「e」を含まない名前のリストが含まれています。私はコードを両方のリストを形成するようにしました、私はそれらを別々に試してみましたが、それらは両方とも同時に新しいリストに追加することはできません。私が最初に行うリストは、新しいファイルに追加される唯一のリストになります。どんな助けでも大歓迎です!1つのファイルのデータを使用して2つの追加リストを新しいファイルに作成する

どちらのリストが新しいと同じファイルに追加する必要が

main_file = open("words.txt", "r") 

#loops to find lists 
lists = open('test.txt') 
lists.read() 
with open("test.txt", "a") as lists: 
    for names in main_file: 
     if len(names) <= 6: 
      lists.write(names) 
    line = True 
    for line in main_file: 
     if "a" in line or "e" in line or "A" in line: 
      line = False 
     else: 
      lists.write(line) 

コード

+0

で正しく理解していれば最初のループがファイルの最後に来た後。カーソルをファイルの先頭にリセットするには、2つのループ間で 'main_file.seek(0)'を実行します。また、 'itertools.tee()'を使って2つの重複したストリームを作成することもできます。または、両方の条件を1つのループに移動します。 – AChampion

+0

私は両方の条件を1つのループに移そうとしましたが、私はそれを行うとリストを混ぜ合わせて別々にする必要があります。申し訳ありませんが、私はちょうどプログラミングで始めているので、あまり分かりません。 – Norman11

+0

main_file.seek(0)がトリックをしました!それ以外は最初のリストの最後の単語と2番目のリストの最初の単語を分ける方法を理解する必要があります。 – Norman11

答えて

0

私はあなたのQNは `main_file`がファイルにカーソル

import re 
l1 = [] 
l2 = [] 
lists = open('test.txt','w') 
with open('words.txt') as f: 
    for line in f.read().split('\n'): 
     if len(line) <= 6: 
      l1.append(line) 
     if not re.search(r'a|e', line): 
      l2.append(line) 
lists.write('\n'.join(l1+l2)) 
lists.close() 
関連する問題