2016-11-07 13 views
1

私はプログラムを書いており、テキストファイルから行をセット/リストに読み込みたいと思います。テキストファイルからセット(Python)への行

ユーザーが5つの数字(スペースバーで区切って入力)を入力したい場合、私のプログラムはユーザーがこれらの数字で何回勝つかをチェックします。宝くじの結果と最小3つの数字が一致した場合に抽選結果が特定の日にカンマで区切られている私のプログラムは、すべてのマッチング結果を出力しますのようなもの:

"Three of your numbers match with: 
01.27.1957 8,12,31,39,43,45 
01.27.1957 8,12,31,39,43,45" 

"Four of your numbers match with: 
01.27.1957 8,12,31,39,43,45 
01.27.1957 8,12,31,39,43,45 

"Five of your numbers match with: 
01.27.1957 8,12,31,39,43,45 
01.27.1957 8,12,31,39,43,45" 

は私のテキストファイルは次のようになります。

index date lottery_results 

1. 01.27.1957 8,12,31,39,43,45 
2. 02.03.1957 5,10,11,22,25,27 
3. 02.10.1957 18,19,20,26,45,49 
4. 02.17.1957 2,11,14,37,40,45 

とそう...

私は固まっています私はこれで始める方法さえ知らない。あなたのファイルが小さい場合readlinesを使用し

def read_data(): 
    results = open("dl.txt", 'r') 

答えて

0
import datetime 


file = open("dl.txt") 

#user input 
user_numbers = set(map(int, input('Enter numbers: ').split(','))) 

for line in file: 

    try: 
     line = line.split() 

     # converts the leading number (without the trailing '.') 
     num = int(line[0][:-1]) 
     # converts from string to datetime object using the format 
     date = datetime.strptime(line[1], '%d.%m.%Y') 
     # creates a set of the coma separated numbers 
     numbers = set(map(int, line[2].split(','))) 
     # matches between the user input to the numbers 
     matches = len(numbers & user_numbers) 

     print(matches, 'of your number matches with', date.strptime('%d.%m.%Y'), 'whose numbers were', ', '.join(map(str, numbers))) 

    except: 
     pass 
+0

は、数字を入力した後、これは私が [...] user_numbersでライン7、=セット(マップ(int型を見たものである...それはworkigされていない裸の 'except's –

+0

を使用しないでくださいValueError:基数10のint()のリテラルが無効です: '2 3 10 39 24 49' – yayusha

+0

@yayusha i worte 'split( '、number'):入力( 'Enter numbers:').split( '、' ) 'は、ユーザ番号が'、 'で区切られ、入力のスペースではないことを意味します。あなたはそれを 'split()'に変更することができます – Uriel

0

オーケー:

>>> open('/tmp/data', 'r').readlines() 
['line1\n', 'line2\n', 'line3\n'] 

は、ドキュメントを参照してください!それはとても簡単でした...

dl = open("dl.txt", "r") 
for line in dl: 
    line = line.split() 

は今、私はこのリストをナビゲートすることができ、この

['5861.', '03.11.2016', '7,8,17,22,26,38'] 

のようなものを生成します。 UrielとJayに感謝します。 :)

関連する問題