2013-10-04 74 views
0

我是Python的新手,我正在從教程中學習,並且這裏有一行假設從.csv文件讀取並跳過第一行(標題) :Python - CSV讀爲一條大線

data = open("banklist.csv", "r").readlines()[1:] 
for entry in data: 
    #do some stuffs 

問題是,它甚至沒有進入循環。卸下[1:]在公開聲明中,並添加打印數據,我發現,CSV似乎應該被理解成一個大線,而不是刪除的頭去掉一切:

["First National Bank also operating as The National Bank of El Paso,Edinburg,TX,14318,13-Sep-13,18-Sep-13\rThe Community's Bank,Bridgeport,CT,57041,13-Sep-13,17-Sep-13\rSunrise Bank of Arizona,Phoenix,AZ,34707,23-Aug-13,11-Sep-13\rCommunity South Bank,Parsons,TN,19849,23-Aug-13,5-Sep-13\rBank of Wausau,Wausau,WI,35016,9-Aug-13,4-Sep-13\rFirst Community Bank of Southwest Florida (also operating as Community Bank of Cape Coral),Fort Myers,FL,34943,2-Aug-13,26-Aug-13\rMountain National Bank,Sevierville,TN,34789,7-Jun-13,26-Aug-13\r1st Commerce Bank,North Las Vegas,NV,58358,6-Jun-13,26-Aug-13\rBanks of Wisconsin d/b/a Bank of Kenosha,Kenosha,WI,35386,31-May-13,12-Jul-13\rCentral Arizona Bank,Scottsdale,AZ,34527,14-May-13,26-Aug-13\rSunrise Bank,Valdosta,GA,58185,10-May-13,12-Jul-13\rPisgah Community Bank,Asheville,NC,58701,10-May-13,26-Aug-13\rDouglas County Bank,Douglasville,GA,21649,26-Apr-13,26-Aug-13\rParkway Bank,Lenoir,NC,57158,26-Apr-13,26-Aug-13\rChipola Community Bank,Marianna,FL,58034,19-Apr-13,12-Jul-13\rHeritage Bank of North Florida,Orange Park,FL,26680,19-Apr-13,26-Aug-13\rFirst Federal Bank,Lexington,KY,29594,19-Apr-13,12-Jul-13"] 

我怎麼去這個?

+1

Python有一個CSV解析器模塊 –

+0

我可以使用該模塊,但任何想法,爲什麼是這樣的哈ppening? –

+0

也許是換行符不匹配? – fuenfundachtzig

回答

1

您正在閱讀的文本文件在系統中使用了不同的換行符約定; \r其中您的系統可能需要\n\r\n

可以使用通用換行符支持,而不是'rU'模式打開文件:

data = open("banklist.csv", "rU").readlines()[1:] 

可以跳過第一行中的更聰明的辦法是使用文件作爲一個迭代器;直接循環。該next()方法可以讓你抓住一條線的時間,給你一個方法來跳過第一行:

with open("banklist.csv", "rU") as infile: 
    next(infile, None) # skip the first line 
    for line in infile: 
     print line 

但是,如果這是一個CSV文件,使用csv模塊讀取數據:

import csv 

with open("banklist.csv", "rU") as infile: 
    reader = csv.reader(infile) 
    next(reader, None) # skip the first row 
    for row in reader: 
     print row 

的CSV模塊處理分割線進入名單您:

['First National Bank also operating as The National Bank of El Paso', 'Edinburg', 'TX', '14318', '13-Sep-13', '18-Sep-13'] 
["The Community's Bank", 'Bridgeport', 'CT', '57041', '13-Sep-13', '17-Sep-13'] 
['Sunrise Bank of Arizona', 'Phoenix', 'AZ', '34707', '23-Aug-13', '11-Sep-13'] 
['Community South Bank', 'Parsons', 'TN', '19849', '23-Aug-13', '5-Sep-13'] 
['Bank of Wausau', 'Wausau', 'WI', '35016', '9-Aug-13', '4-Sep-13'] 
['First Community Bank of Southwest Florida (also operating as Community Bank of Cape Coral)', 'Fort Myers', 'FL', '34943', '2-Aug-13', '26-Aug-13'] 
# etc. 
+0

謝謝!這看起來真的很可疑。 –