2017-12-22 7 views
-1

私は可能な限り、Pythonと自己学習の新人です。私は整数を含む.csvファイルから1次元配列(pythonリスト)にデータを読み取ろうとしています。Python 3.x、ファイルの内容を読む方法(一次元のリストに)

.csvファイルは次のようになります。

"1","2","3","4","5","6","7","8" 
"9","10","11","12","13","14","15","16" 
. 
. 
. 

私はこのように試してみました:

l = [] 
f = open('file.csv', 'r') 
for line in f: 
     l.append(line) 
f.close() 

私が代わりに私が意図した線形リストの「リストのリスト」(2次元配列)を取得します。 また、リストには文字列ではなく整数が含まれています。それはあなたを助けるかもしれない

+0

コードを正しくフォーマットしてください。 – DavidG

+2

答えはすでにそこにあります。リストやファイルの読み込みを読んでみてはいかがですか? –

+0

あなたのコードは文字列/行の1D配列リストを与えるはずです。 – furas

答えて

-1

この

with open("main.csv") as csvfile: 
    tlines = [line.split(",", 2) for line in csvfile.readlines()] 
    text = [" ".join(line) for line in tlines] 
print text 

を試してみてください。

+1

これは整数や文字列の問題を解決するものではなく、説明もしません。 –

+1

'split'を' 2'に制限するのはなぜですか?それは意味をなさない。 –

+0

私は古いプロジェクトからこのコードを切り捨てました。それは2で分割されています。 – SkylordAK

0

実は、あなたはは、リストのようなを探して各文字列と、リストのリストが、文字列のリスト(ファイル内の行を)を取得されていません。まず、線を分割する必要があります。 になります。line.split(",")を使用してください。ただし、CSVファイルがあるので、csvモジュールを使用するだけです。これにより、"..."も削除されます。

import csv 
with open('test.csv') as f: 
    r = csv.reader(f) 
    lst = [] 
    for line in r: 
      lst.append(line) 

今、私たちは、リストの実際のリストを持っている:あなたはすべての行のすべての数字とフラットリストをしたい場合は[['1', '2', '3', '4', '5', '6', '7', '8'], ['9', '10', '11', '12', '13', '14', '15', '16']]

次に、あなたが代わりにappendextendを使用する必要がありますし、そしてこれはあなたに[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]を与える

for line in r: 
     lst.extend(map(int, line)) 

:これらstrintにあなたもキャストすることができます。リスト内容を使用して1行でこれをすべて実行することもできます:

lst = [int(s) for line in r for s in line] 
+0

あなたの詳細な回答tobias_kをありがとう、私はあなたのソリューションを試して、それは完全に働いた。 Btw、 '...'はcsvファイルには存在しませんが、これは以前のような行が増えていることを示す私の方法でした。私は学ぶべきことがたくさんあります:) – johnnym

+0

@johnnym "を削除する" ... ""私は個々のエントリの周りの引用符を削除することを意味しました。また、これがあなたの問題に役立った場合は、その答えを受け入れることを検討して、その問題が解決されたとマークしてください。幸せな休日! –

関連する問題