4

単純な問題のように思える問題に対処するのに苦労しています。私は csv をインポートし、その列を配列に分割して、さまざまな操作を実行できるようにしてから、zip() をまとめようとしています。

import csv

data = csv.reader(open('test.csv', 'rb'), delimiter=",", quotechar='|')
column1, column2 = [], []

for row in data:
    column1.extend(row[0])
    column2.extend(row[1])

print column1
print column2

このコードは、文字列ではなく個々の文字である要素を含む 2 つの配列を出力します。単一の列でこれを実行しようとすると、 column1.extend(row) は私が望むことを行います。

この特定の問題を解決する方法、またはこれを n 個の列に一般化する方法に興味があります。

4

4 に答える 4

6

column1.extend(row[0])に変更する必要がありますcolumn1.append(row[0])(そして、明らかにcolumn2についても同じです)。Extendは、あるリストの内容を別のリストに追加するためのものであり、appendは、単一の要素を追加するためのものです。Extendは、文字列を文字のリストとして扱い、各文字を追加するようにpythonに指示しています。

>>> lst = []
>>> lst.extend("foo")
>>> lst
['f', 'o', 'o']
>>> lst.append("foo")
>>> lst
['f', 'o', 'o', 'foo']
于 2012-04-04T22:57:25.063 に答える
1

column1とcolumn2はリストです。使用するメソッドは、 extend()ではなくappend( )です。

公式ドキュメントを確認してください:http: //docs.python.org/tutorial/datastructures.html

于 2012-04-04T22:59:02.353 に答える
1

rowインデックスは文字列であるため、列に追加する場合は、次のいずれかを実行します。

column1.append(row[0])

またはこれ:

column1.extend([row[0]])
于 2012-04-04T22:59:33.270 に答える
1

別のオプション:

column1 = [row[0] for row in data]
于 2016-03-09T14:05:10.133 に答える