2011-09-23 4 views
13

everyone.Iリストのリストがあり、列と行を含むCSVファイルに書きたいと思います。私はwriterowsを試しましたが、私が望むものではありません。私のリストの例は次のとおりです:Pythonのリストから列と行のcsvファイルにデータを書き込むにはどうすればよいですか?

[[1, 2], [2, 3], [4, 5]] 

ありがとうございました。

これにより

:私は次のセルにセル内のセルで1 2、2 3 etc.Andない1セル内および2を取得

example=csv.writer(open('test.csv', 'wb'), delimiter=' ') 
example.writerows([[1, 2], [2, 3], [4, 5]]) 

私はこの例のリストをファイルに書く必要があります。そのため、すべての要素がそれ自身のセルにあるExcelで開くときに開きます。 私の出力は次のようにする必要があります:

1 2 
2 3 
4 5 

diferentセル内の各要素。

+1

「のセルに」CSVの世界ではあまり意味を持ちません。どんな場合でも、あなたのコードは*あなたが望むことをします*。どのように出力ファイルを表示していますか? –

答えて

14

csvモジュールを使用した例は素晴らしいです!また、いつでも簡単に、次の仮の例のように、フォーマットされた文字列を使用してテキストファイルに書き込むことができます。

l = [[1, 2], [2, 3], [4, 5]] 

out = open('out.csv', 'w') 
for row in l: 
    for column in row: 
     out.write('%d;' % column) 
    out.write('\n') 
out.close() 

それはエクセル(あなたの要件のいずれか)で最適に動作するので、私は、セパレータとして;を使用しました。

希望すると助かります!

+1

あなたには余分なものがあります。各行の終わりに。一度に1つのセルを書き込むのは難しいです。 A;小数点としてカンマを使用するロケールではExcel **のみ**に最適です。なぜ彼が必要とするときにこのDIYのものをOPに表示するのは、 'csv.writer'への彼の呼び出しにちょっと微妙ですね?? –

+0

@John Machin:このアプローチを好む読者もいます。彼がすでに 'csv'を使っているなら、OPがDIYに戻るだろうとは思っていません。しかし、私は、あなたが物事を行うための新しい方法を学び、その中から選ぶことができる場所だと思います。また、文字列フォーマット操作では、あなたの好みのフィールドセパレータ、行末などを使用することもできます。 – heltonbiker

2

CSVファイルに書き込む場合、スペースを区切り文字として使用するのはなぜですか? CSVファイルでは、カンマまたはセミコロン(Excelで)をセルデリミタとして使用するため、delimiter=' 'を使用すると、実際にはCSVファイルが生成されません。デフォルトの区切り文字と方言を使用してcsv.writerを作成するだけです。あなたはCSVファイルをExcelにそれ以降のファイル読み込みたい場合は、(この方言はとにかくデフォルトですが)自分の意思を明確にするために、明示的にExcelの方言を指定することができます。

example = csv.writer(open("test.csv", "wb"), dialect="excel") 
10
>>> import csv 
>>> with open('test.csv', 'wb') as f: 
...  wtr = csv.writer(f, delimiter= ' ') 
...  wtr.writerows([[1, 2], [2, 3], [4, 5]]) 
... 
>>> with open('test.csv', 'r') as f: 
...  for line in f: 
...   print line, 
... 
1 2 <<=== Exactly what you said that you wanted. 
2 3 
4 5 
>>> 

をするようにそれを得るためにそれはExcelで分かりやすく読み込むことができます。セミコロンが必要なロケール(ヨーロッパなど)にいる場合を除き、コンマ(csv default)を区切り文字として使用する必要があります。

2

は、これらのコードにアクセスしてもらい:

>>> import pyexcel as pe 
>>> sheet = pe.Sheet(data) 
>>> data=[[1, 2], [2, 3], [4, 5]] 
>>> sheet 
Sheet Name: pyexcel 
+---+---+ 
| 1 | 2 | 
+---+---+ 
| 2 | 3 | 
+---+---+ 
| 4 | 5 | 
+---+---+ 
>>> sheet.save_as("one.csv") 
>>> b = [[126, 125, 123, 122, 123, 125, 128, 127, 128, 129, 130, 130, 128, 126, 124, 126, 126, 128, 129, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 134, 134, 134, 134, 134, 134, 134, 134, 133, 134, 135, 134, 133, 133, 134, 135, 136], [135, 135, 136, 137, 137, 136, 134, 135, 135, 135, 134, 134, 133, 133, 133, 134, 134, 134, 133, 133, 132, 132, 132, 135, 135, 133, 133, 133, 133, 135, 135, 131, 135, 136, 134, 133, 136, 137, 136, 133, 134, 135, 136, 136, 135, 134, 133, 133, 134, 135, 136, 136, 136, 135, 134, 135, 138, 138, 135, 135, 138, 138, 135, 139], [137, 135, 136, 138, 139, 137, 135, 142, 139, 137, 139, 138, 136, 137, 141, 138, 138, 139, 139, 139, 139, 138, 138, 138, 138, 137, 137, 137, 137, 138, 138, 136, 137, 137, 137, 137, 137, 137, 138, 148, 144, 140, 138, 137, 138, 138, 138, 137, 137, 137, 137, 137, 138, 139, 140, 141, 141, 141, 141, 141, 141, 141, 141, 141], [141, 141, 141, 141, 141, 141, 141, 139, 139, 139, 140, 140, 141, 141, 141, 140, 140, 140, 140, 140, 141, 142, 143, 138, 138, 138, 139, 139, 140, 140, 140, 141, 140, 139, 139, 141, 141, 140, 139, 145, 137, 137, 145, 145, 137, 137, 144, 141, 139, 146, 134, 145, 140, 149, 144, 145, 142, 140, 141, 144, 145, 142, 139, 140]] 
>>> s2 = pe.Sheet(b) 
>>> s2 
Sheet Name: pyexcel 
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ 
| 126 | 125 | 123 | 122 | 123 | 125 | 128 | 127 | 128 | 129 | 130 | 130 | 128 | 126 | 124 | 126 | 126 | 128 | 129 | 130 | 130 | 130 | 130 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 132 | 134 | 134 | 134 | 134 | 134 | 134 | 134 | 134 | 133 | 134 | 135 | 134 | 133 | 133 | 134 | 135 | 136 | 
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ 
| 135 | 135 | 136 | 137 | 137 | 136 | 134 | 135 | 135 | 135 | 134 | 134 | 133 | 133 | 133 | 134 | 134 | 134 | 133 | 133 | 132 | 132 | 132 | 135 | 135 | 133 | 133 | 133 | 133 | 135 | 135 | 131 | 135 | 136 | 134 | 133 | 136 | 137 | 136 | 133 | 134 | 135 | 136 | 136 | 135 | 134 | 133 | 133 | 134 | 135 | 136 | 136 | 136 | 135 | 134 | 135 | 138 | 138 | 135 | 135 | 138 | 138 | 135 | 139 | 
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ 
| 137 | 135 | 136 | 138 | 139 | 137 | 135 | 142 | 139 | 137 | 139 | 138 | 136 | 137 | 141 | 138 | 138 | 139 | 139 | 139 | 139 | 138 | 138 | 138 | 138 | 137 | 137 | 137 | 137 | 138 | 138 | 136 | 137 | 137 | 137 | 137 | 137 | 137 | 138 | 148 | 144 | 140 | 138 | 137 | 138 | 138 | 138 | 137 | 137 | 137 | 137 | 137 | 138 | 139 | 140 | 141 | 141 | 141 | 141 | 141 | 141 | 141 | 141 | 141 | 
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ 
| 141 | 141 | 141 | 141 | 141 | 141 | 141 | 139 | 139 | 139 | 140 | 140 | 141 | 141 | 141 | 140 | 140 | 140 | 140 | 140 | 141 | 142 | 143 | 138 | 138 | 138 | 139 | 139 | 140 | 140 | 140 | 141 | 140 | 139 | 139 | 141 | 141 | 140 | 139 | 145 | 137 | 137 | 145 | 145 | 137 | 137 | 144 | 141 | 139 | 146 | 134 | 145 | 140 | 149 | 144 | 145 | 142 | 140 | 141 | 144 | 145 | 142 | 139 | 140 | 
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ 
>>> s2[0,0] 
126 
>>> s2.save_as("two.csv") 
関連する問題