2013-10-25 48 views
0

不知道這裏發生了什麼。我有以下內容的文本文件:閱讀文本文件時,爲什麼我會在每行之前獲得b'?

1999,3,Rep Armey, Richard K.,[TX-26],0 
1999,4,Rep Armey, Richard K.,[TX-26],0 
1999,5,Rep Armey, Richard K.,[TX-26],0 
1999,6,Rep Hyde, Henry J.,[IL-6],0 
1999,7,Rep Talent, Jim,[MO-2],11,Rep DeMint, Jim,[SC-4],... 
... 

然後我在python 3.3使用此代碼閱讀:

with open(bill_file_name,'rb') as input_file: 
    lines=input_file.readlines() 

for line in lines: 
    line_list=str(line).split(',') 
    session=line_list[0] 

當我做print(session)我得到b'1999所有條目。

發生了什麼事?我如何避免這種情況?

+0

你可能想使用['csv'模塊(http://docs.python.org/3/library/csv.html),這對你如何打開文件相當具體的要求(在Python 3中,你需要'open(filename,'r',newline =「」)')。 – Blckknght

+0

因爲線條像最後一個線條一樣,我還沒有碰到csv模塊或熊貓的運氣,它延伸了約33列。 –

+0

我認爲常規的'csv.reader'可以處理任意數量的列的行,但我並沒有在這種情況下嘗試過。解析它爲每行提供的列表可能是一件苦差事,但可能不會比你已經使用'line.split(',')'更有效。 – Blckknght

回答

4

這可能是因爲您以二進制模式打開文件。
嘗試open(bill_file_name,'r')

+0

是的...謝謝,我應該意識到這一點。 –

1

這是因爲您在讀取時啓用了b(二進制)選項。使用以下內容。

with open('a.txt', 'r') as inp: 
    lines = inp.readlines() 

for line in lines: 
    line_list=str(line).split(',') 
    session=line_list[0] 


>>> print(session) 
1999 
相關問題