差異

2015-02-24 117 views
5

想象我們有一個file = open("filetext.txt", 'r')差異

是什麼split()方法和readlines方法()方法之間的區別 看來,這兩個分割每行,並把它作爲一個列表中的字符串。 那麼是什麼讓他們不同?

for line in file: 
    values = line.split()  #break each line into a list 

file.readlines() #return a list of strings each represent a single line in the file 

回答

3

readlines將整個文件拆分成行,相當於file.read().split('\n'),但效率更高一些。你的例子,

for line in file: 
    values = line.split() 

拆分每一行的空格,在行中建立一個單詞列表。每次迭代都會覆蓋value,所以除非您將值保存在某個地方,否則只有部分文件在一次內存中。

0

這是主要的區別是:

file對象具有readlines但不split

>>> print hasattr(file, 'split') 
False 
>>> print hasattr(file, 'readlines') 
True 

str對象具有split但不readlines

>>> hasattr("somestring", 'split') 
True 
>>> hasattr("somestring", 'readlines') 
False 

並回答你的問題,一個是在一個字符串對象上操作,另一個是在一個文件對象上操作。

它們不會做同樣的事情,因爲在文件上操作時返回行列表,而在字符串上操作時返回分割行。

+1

另外,['readlines'](https://docs.python.org/3/distutils/apiref.html?highlight=readlines#distutils.text_file.TextFile。 readlines)不需要參數,只能在換行符上打破。另一方面,['split'](https://docs.python.org/3/library/stdtypes.html#str.split)可以帶參數,並且可以分裂你告訴它分割的_any_字符。此外,'split'不必在_all_選項上分割,但可以受到限制。 – BobChao87 2015-02-24 16:42:38

1

readlines做平臺不可知的行分割和split沒有通用分割。

作爲一個例子:

In [1]: from StringIO import StringIO 

In [2]: StringIO('test:test:test').readlines() 
Out[2]: ['test:test:test'] 

In [3]: StringIO('test:test:test').read().split(':') 
Out[3]: ['test', 'test', 'test']