2016-06-02 12 views
0

は、だから私のtxtファイルは次のようになります。私は、xのタプルを取得する必要があり、yはファイルから座標と、リストに追加し

68,125 
113,69 
65,86 
108,149 
152,53 
78,90 
54,160 
20,137 
107,90 
48,12 

が、私はこれらのファイルを読み込んで、リストにそれを配置する必要がありますx座標とy座標のタプル。

私の出力は

[(68, 125), (113, 69), (65, 86), (108, 149), (152, 53), (78, 90), (54, 160), (20, 137), (107, 90), (48, 12)] 

が、私はこれを行う方法で立ち往生していなければなりません。私は基本的なpythonだけを使用する必要があります。

編集:私は '\ nを' を取り除くともどのように取得するにはどうすればよい

['68,125\n', '113,69\n', '65,86\n', '108,149\n', '152,53\n', '78,90\n', '54,160\n', '20,137\n', '107,90\n', '48,12\n'] 

私の試みは、これまでこのように、この

numbers = [] 
input_file = open(filename,'r') 
numbers_list = input_file.readlines() 
input_file.close() 
for i in numbers_list: 
    numbers += [i] 
return numbers 

マイ出力リターンですリスト内の各要素をタプルにすることはできますか?ありがとうございました。私の試みで追加しないのは間違いです。ここで

+0

あなたは何をしようとしましたか? – miradulo

+0

申し訳ありません私はこれをしたはずです –

答えて

2

は新しいに基づいてすべてのコンテンツを読みますファイルからの行。 各文字列から改行を削除します。 次に、コンマで区切って各文字列をタプルに変換します。 以下は、あなたが期待した通りに結果を出したコンテンツを持つテキストファイルの入力コードです。

import sys 
def test(filename): 
    f = open(filename) 
    lines = f.readlines() 
    lines = [item.rstrip("\n") for item in lines] 
    newList = list() 
    for item in lines: 
      item = item.split(",") 
      item = tuple(int(items) for items in item) 
      newList.append(item)     
    f.close() 
    print newList 

if __name__ == "__main__": 
    test(sys.argv[1]) 

O/P: 
[email protected]:myExperiments$ python test.py /export/home/techie/myExperiments/test.txt 
[(68, 125), (113, 69), (65, 86), (108, 149), (152, 53), (78, 90), (54, 160), (20, 137), (107, 90), (48, 12)] 

希望すると、これが役立ちます。 :-)

+0

このメソッドを使って引用符( "'")を取り除くにはどうしたらいいですか? –

+0

あなたは整数のタプルが欲しいと思いますか? – sagar

+0

うん、私はそれを指定したはずです。 –

2

は3であり、2行が答えます

with open("my_txt_file") as f: 
    lines = f.readlines() 
result = [tuple(int(s) for s in line.strip().split(",")) for line in lines] 

良く、は、IljaEveriläが指摘したように、 "イテレータとしてオープンされたファイルを":

with open("my_txt_file") as f: 
    result = [tuple(int(s) for s in line.strip().split(",")) for line in f] 
+1

ファイルから行を読み込んですぐに処理する必要がある場合、ほとんどの場合、 'readlines()'は避けるべきです。開いているファイルをイテレータとして使用してください。リスト内の* line *に変更を加えていないので、リストの理解のためのリストの不要なコピーを作成します。 'split()[0]'は奇妙です、あなたは 'strip()'を意味しましたか? –

+0

@IljaEveriläありがとうございました!答えを編集しました –

1

あなたのファイルは、カンマ区切りの整数値が含まれているとして、あなたがそれを処理するためにcsvモジュールを使用することができますが:

import csv 

with open(filename, newline='') as f: 
    reader = csv.reader(f) 
    numbers = [tuple(map(int, row)) for row in reader] 
関連する問題