2017-09-24 35 views
-1

我有如下信息的CSV文件:的Python:找出在CSV列現在的位置文件

team;name;city;country;points 
VCF;Valencia;Valencia;Spain;98 
FCB;Barcelona;Barcelona;Spain;54 
MU;Manchester;Manchester;England;87 

我想知道如何返回列號的「城市」的信息出現的位置,並將其保存在可變的「X」中。在上面的例子中,它會是「2」,因爲它出現在第三個位置。

這是代碼,我到目前爲止有:

import csv 

file = 'spanishleague2012' 
csv_file = csv.reader(open(file)) 
next(csv_file) 

x = [column== city] 

print x 

結果應該是:2

+2

你必須用'csv.DictReader可以更容易地()';那麼每一行都有一個「城市」鍵。 –

+0

@Martijn它將如何幫助您找到「城市」列的位置? –

+0

你不需要。最終目標是訪問所有城市的價值。 –

回答

0

您可以打開文件進行讀取,並檢查第一頭:

f = [i.strip('\n').split(";") for i in open('filename.csv')] 
print(f[0].index("city")) 
+0

這似乎太特別。 CSV文件中的列可能包含除「分隔符」之外的「」;「」。 –

0

您可以在標題行上使用enumerate(),檢查列名稱:

import csv 

with open(filename) as f: 
    reader = csv.reader(f, delimiter=";")   
    for idx, col in enumerate(next(reader)): 
     if col == "city": 
      print idx 
      break 

如果目標是訪問所有城市的值,那麼你可以使用csv.DictReader

with open(filename) as f: 
    reader = csv.DictReader(f, delimiter=";") 
    for row in reader: 
     print row["city"] 
0

而是跳過頭的,在讀它,然後查找名爲"city"列的索引:

csv_file = csv.reader(open(file)) 
header = next(csv_file) 
city_idx = header.index("city") 
0
import csv 
with open("C:/pathTofilecsv", "rb") as file: 
    data= csv.reader(file,delimiter=';') 
    cols = data.next() 

你必須在這種情況下,陣列col所有列的列表

0現在

,你可以得到城市列的索引

X = cols.index("city") 
0

這將閱讀您的文件,並返回2

import csv 

with open('spanishleague2012','rb') as f: 
    csv_file = csv.reader(f,delimiter=';') 
    header = next(csv_file) 
    print header.index('city') 

但隨着DictReader,你不需要知道列數:

import csv 

with open('spanishleague2012','rb') as f: 
    csv_file = csv.DictReader(f,delimiter=';') 
    for row in csv_file: 
     print row['city'] 

輸出:

Valencia 
Barcelona 
Manchester 
相關問題