2016-11-24 147 views
1

我想讀取一個csv文件,但由於某種原因,當我要求它打印時,它會打印內存地址而不是表格。閱讀csv文件問題python

下面是我的結果:

>>> read_table('books.csv') 

['books.csv', 'boxoffice.csv', 'imdb.csv', 'olympics-locations.csv', 'olympics-results.csv', 'oscar-actor.csv', 'oscar-film.csv', 'seinfeld-episodes.csv', 'seinfeld-foods.csv'] 

<_csv.reader object at 0x03977C30> 

這是我的代碼:

import csv 

import glob 
from database import * 

def read_table(name): 
    ''' 
    (str) -> Table 
    Given a file name as a string, the function will return the file as a Table 
    object. 
    ''' 
    # create a list that stores all comma-separate files(*.csv) 
    files_list = glob.glob('*.csv') 
    print(files_list) 
    # check if the desired file is in the list 
    if(name in files_list): 
     # if found, open the file for reading 
     with open(name) as csvfile: 
      readCSV = csv.reader(csvfile, delimiter = ',') 
      print(readCSV) 

東西是在我的腳本錯誤?

+0

根據[documentation](https://docs.python.org/2/library/csv.html),'csv.reader'返回一個reader對象,它將遍歷給定csvfile中的行。所以爲了打印文件,你應該迭代對象,對於每次迭代,對象都會返回一行新的數據。如果需要,可以打印此行。 –

回答

2

試試這個:

for line in readCSV: 
    print(line) 

一個更完整的例子和說明,請參見docs。簡而言之,csvreader返回一個迭代器對象(一個列表也是一個迭代器)。

+0

這次它工作。你知道發生這種情況的原因嗎? –

+0

好的非常感謝你! –

+0

@ShamanthChedde - 你創建了一個閱讀器,但沒有閱讀它。示例和參考文檔顯示了一種方法。你也可以做'table = list(readCSV)'。 – tdelaney

0
import csv 
from collections import defaultdict 

col_names = defaultdict(list) 

with open(filename) as f: 
    reader = csv.DictReader(f) 
    for each_row in reader: 
     for (i,j) in each_row.items(): 
      col_names[i].append(j) 


print(col_names[column name]) 
+2

請問,你能解釋一下你試圖用你的代碼嗎? – yceruto

+0

它將打印您給定列名稱下的所有數據 –