2017-05-14 7 views
-1

私はPythonには新しく、これは試験に必要です。 映画館に座っている2つのtxtファイルがあります。 私はファイルを開いて、取った座席と空いているものを読み込み、この情報を保存しようとしています。Pythonで.txtファイルを開き、すべての文字を別々に読み込んで保存する

TXTは、ビットのようになります。

xxxxooxoxxx 
xooxoxxoxox 
ooxxxoxooxx 

O-Sはシートが自由であり、X-Sが撮影される場合です。 2番目の生の最初の座席が撮影されますが、3番目と4番目はフリーです。

データを正しく保存したり、文字でファイルを開く方法がわかりません。私は本当に始める方法がわかりません。

+0

私はあなたの目標を達成するために文字でファイルを読む必要があるとは思えません。ファイルを1行ずつ読み込み、各行のすべての文字を調べてみましょう。 – timgeb

+0

サンプルのtxtファイルの具体的な結果や出力を教えてくれなかったので、正確にあなたの質問が何であるかわかりません。 – timgeb

+0

質問をより明確に定義できますか?あなたはファイルを読む方法を尋ねていますか?またはファイルを保存する方法は?ファイル内の異なる値をどのように区切るか? –

答えて

4

あなたの質問が正しく理解されたことを願っています。ファイルが極端に大きくない(100 MB以上でない)場合は、ファイル全体を読み取り、その内容を変数に格納することができます。

たとえば、このtxtファイルはdata.txtという名前で保存されています。次に、この2行のファイルを開くことができます:

with open('data.txt') as f: 
    data = f.readlines() 

データは行のリストになりました。

>>> data 
['xxxxooxoxxx\n', 'xooxoxxoxox\n', 'ooxxxoxooxx\n'] 

ここで、データリストをブール値の2次元配列に変換します。ここで醜い1つのライナーは次のとおりです。

>>> taken = [[seat == 'x' for seat in row.rstrip()] for row in data] 

今、あなたはこれを好きな席が取られたかどうかを判断たりすることはできません。

>>> taken[1][1] 
False 
>>> taken[1][0] 
True 
+0

ありがとう、あなたは素晴らしいです。 アイデアはちょっと複雑すぎるけど、あなたがここで説明していることを理解するためにYTビデオを見ました。 ありがとう! –

+0

@BotondHorváth質問を解決した場合は、この回答を受け入れるのを忘れないでください。それは解決されたようにこの問題をマークします –

+0

@matejmあなたはあなたを引用するために醜い1つのライナーを使用していました。私はちょっと新しいので、コピーして貼り付けるのではなく、よく見えるものを理解して思いつきたいと思っていました。 onestring = foglaltsag.readline() ストリング=のfoglaltsag.readlines() allseats = "" .join(ストリング) 行= [] 席= [] チャー= 300 原= 0 N1 = 0 N2 = 0 ながらN2 = 20: 一方LEN(席)= 15:! seattype = allseats [N1] seats.append(seattype) N1 = n1を+ LEN(onestring) N2 = n2と+ 1 n1 =オリジナル+1 オリジナル=オリジナル+ 1 –

0

、Pythonのファイルと同じディレクトリにあるファイルを開くこれは、あなたがリードモード(r)でファイルを開く方法です

file=open("file.txt","r") 
file1=file.read() 

を使用するには。今度は文字のリストが必要なので、リスト関数を使用できます。

file1=list(file1) 

ここですべての文字のリストが表示されます。改行で分割する場合は、listを使用する代わりにsplitを使用します。

file1=file1.split('\n') 

最後に、ファイルを閉じます。

file.close() 
0

「R」オプションを使用してPythonでオープン機能を使用してファイルを読み込むことができます:

with open("file.txt", 'r') as f: 
    for row in f: 
     for each_char in str(row): 
      print each_char 
      # Here use your statement 
関連する問題