2016-09-19 29 views
-1
def rowfilter(): 
    field_data = {} 
    try: 
     csv_read = csv.reader(open('sample.csv',), delimiter=',', quotechar='|') 
     for row in csv_read: 
      for field in row[7]: 
       print(field)  


    except FileNotFoundError: 
      print("File not found") 

rowfilter() 

该代码运行成功,但我希望此代码在user_input之前打印数据。 例如如果用户输入5,那么它应该打印从1到5的所有细节以及与其关联的所有列。如何从Python中的CSV文件读取列

回答

0
def rowfilter(col1, col2): 

    try: 
     csv_read = csv.reader(open('items.csv'), delimiter=',', quotechar='|') 
     for row in csv_read: 
     print(row[int(cols[0]):int(cols[1])]) 

    except FileNotFoundError: 
      print("File not found") 

inputrows = input("Enter columns in the format: col1 col2 ") 
rowfilter(inputrows.split())) 

我已编辑这个答案按你的评论,就可以处理CSV行作为一个列表,一旦CSV读者已经阅读。因此,此方法会将列col1打印到col2。请注意,python是0索引。

+0

工作如何从表USER_INPUT读取特定/特定的列。例如,我需要所有列的行值从3开始到n .. –

+0

我按照您的要求编辑了我的答案。 –

0

这是几乎可以肯定pandas

import pandas as pd 

df = pd.read_csv('sample.csv', delimiter=',', quotechar='|') 

#you can get the 7th column like this 
df_seven = df[df.columns[7]] 

#Then slice the dataframe as you see fit 
df_seven[0:5] # first five rows 
df_seven[4:9] # rows 4 to 9... etc 
+0

似乎熊猫不会在py3.3中工作。 –

+0

在python3.5中完美适用于我 – JoshuaBox