2012-11-02 53 views
0

我一直在遇到以下問題,我需要聲明輸入文件的input_fields,並且我只是將文件複製並粘貼到我的變量中,添加逗號和引號。例如:使用python自動化csv文件中的input_fields聲明

input = ("First Name", "Middle Name", "Last Name") 

我想這個過程自動化,使我的程序可以有這樣一行:

input = inputize.function1("name_of_file.csv") 

當功能1採用輸入文件(「name_of_file.csv」),並返回,在這種情況下是三個字符串的元組(「名字」,「中間名」,「姓氏」)。正如你可以想象,這是一個痛苦,因爲我必須爲許多文件手動執行此操作,其中許多文件有很多列...

我想我想要的基本結構看起來像下面這樣,但我一直認爲必須有一種非常簡單的方法來獲取csv文件的第一行,將每列列標題分開,並在其周圍放置引號,並在其後放置逗號,然後將整個事件存儲爲元組...

def function1(input_file): 

    with open(input_file, "rb") as infile: 
     for line in infile: 
      split = line.split(",") 
      for item in split: 
       input = '"' + item + '"," 
      return input 

我希望這對其他人也有幫助,因爲它看起來像一個普通的足夠/超級煩人的手動任務,並且肯定會很感謝任何指導。

附錄

我一直在寫這樣的代碼:

input_fields = ("First Name", "Middle Name", "Last Name") 
reader = csv.DictReader(infile, fieldnames = input_fields) 

每低於你的答案,這似乎是最上面一行是沒有實際意義,因爲所有我需要做的就是:

reader = csv.DictReader(infile) 

回答

1

你可以使用DictReader它有一個fieldnames屬性!

reader = DictReader(open('name_of_file.csv')) 
reader.fieldnames 

使用內置的DictReader將幫助您解析csv文件中涉及的一些細微差別。

+0

謝謝你!完美的作品。只要我能接受你的答案(6分鐘),我就會這樣做。 – user7186