1

ユーザーと場所の 2 つの列を持つ CSV ファイルがあります。2 つのリストを作成します。1 つはユーザーのみ、もう 1 つは場所のみを含むリストです。これにより、networkx の draw_network_nodes(nodelist=...) 関数を使用して、ユーザーと場所を異なる形状と色 (すべてのユーザー) のノードとして個別に描画できます。は青いボックスで、すべての場所は赤い円になります)。

また、私の CSV ファイルにはヘッダーがあるため、ヘッダー名をどちらのリストにも含めたくありません。

4

2 に答える 2

1

あなたは入力、期待される出力を提供しなかったので、私はそれらについていくつかの仮定をしています. 入力ファイルの名前がdata.csvであるとします。

user,location
john,seattle
alan,los angeles
trish,new york

csv を 2 つのファイルに分割するスクリプトはcsv_split.pyと呼ばれます。

import csv

with open('data.csv') as csv_in,          \
     open('users.txt', 'w') as users_out, \
     open('locations.txt', 'w') as locations_out:
    csv_dict_reader = csv.DictReader(csv_in)
    for line in csv_dict_reader:
        users_out.write(line['user'] + '\n')
        locations_out.write(line['location'] + '\n')

討論

  • 私のコードはデモンストレーションを目的としているため、エラーチェックは提供していません。
  • csv.DictReader() クラスは、最初の行がヘッダーであると想定し、それを各行のキーとして使用します
于 2013-02-21T19:01:48.200 に答える
0

Hai Vuの答えの上に構築:

import csv
def reader(filename):
    for (lineno, line) in enumerate(open(filename)):
        if lineno > 0: # skip header
            yield line

filename = "locations.csv"
(users, locations) = zip(*( row for row in csv.reader(reader(filename))))
print "users     =", users
print "locations =", locations

与えます:

locations = ('seattle', 'los angeles', 'new york', 'london')
users     = ('john', 'alan', 'trish', 'jack')

から:

user,location
john,seattle
alan,los angeles
trish,new york
jack,london
于 2013-02-21T19:36:42.470 に答える