2017-01-31 6 views
0

tkinterを使用して、ユーザーがファイルを選択できるダイアログボックスを表示しています。彼らはスペースで区切られていないときに私は、各文字を取得するにはどうすればよい特定の行から始まる文字をファイルごとに読み取る

(115,147) 
(6,145) 
(44,112) 
(17,72) 
(112,1) 
(60,142) 
(47,158) 
(35,43) 
(34,20) 
(38,33) 
11101111110111011111111110111111111111111111111011111111111111110111111111 
111101111101111a11011122112011222222211112111221221111101111111111110111ab 
..more down here 

:私は、ライン11上のファイルを起動し、そのファイルには、次のようになります解析したいですか?私は、私はこのようなオフを開始する必要があります知っている:

# Bring up save dialog box 
file_path = filedialog.askopenfilename(filetypes=[("Text files","*.txt")]) 

# Check if user clicked cancel 
if file is None or file is '': 
    return False 

# Read from file 
with open(file, 'r') as f: 
    # Do something here with f.read() 

は私が(それぞれ独自のインデックスで)リストでこれらの番号を取得したい:

11101111110111011111111110111111111111111111111011111111111111110111111111 
111101111101111a11011122112011222222211112111221221111101111111111110111ab 

任意の助けをいただければ幸いです、ありがとうございました!そのことについては

+0

質問をより明確にしてください。読んでいるときに「ファイルに書き込む」というコメントがあります。 – MYGz

+0

申し訳ありません。 – cress

+0

ごめんなさい。ただ改善する。あなたが探している最終的な出力/結果が何であるかまだ明確ではありません。行の各文字を別の文字として10行目以降のリストのリストとしてすべての行を格納する必要がありますか? – MYGz

答えて

2

まず、あなたはファイルからread()データを必要とし、そのファイル内の行のリストを取得するために改行によって分割:

lines=f.read().split("\n") 

あなただけの最後にライン11から必要な場合は、することができます文字に分割するlist()を使用して、

lines=lines[10:] 

をし、それを反復処理:使用

characters=[list(line)for line in lines] 

出力:

[['1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', 'a', '1', '1', '0', '1', '1', '1', '2', '2', '1', '1', '2', '0', '1', '1', '2', '2', '2', '2', '2', '2', '2', '1', '1', '1', '1', '2', '1', '1', '1', '2', '2', '1', '2', '2', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', 'a', 'b']] 
1
# consume 10 lines 
for _ in range(10): 
    f.readline() 

# read one character at a time 
# f.read(1) will return '' when you reach eof 
c = f.read(1) 
while c: 
    # do something with c 
    c = f.read(1) 

リストや文字列がPythonで同じの一種なので、あなただけの

# consume 10 lines 
for _ in range(10): 
    f.readline() 

rest = f.read() 

を言うことができるし、その後、残りの部分は、その中にすべてのものを持つリスト/文字列になります...つまり、rest[0]が最初の文字で、rest[1]が次のようになります。このように改行もキャプチャすることに注意してください。

関連する問題