差异

2015-02-24 118 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']