readlines()和split()[python]之间的区别

时间:2015-02-24 16:16:56

标签: python readfile

想象我们有一个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 个答案:

答案 0 :(得分:4)

readlines将整个文件拆分为行,相当于file.read().split('\n'),但效率更高一些。你的例子,

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

按行空间拆分每一行,在行中构建单词列表。每次迭代都会覆盖value,所以除非你在某处保存值,否则只有部分文件在内存中一次。

答案 1 :(得分:1)

这是主要区别:

file对象有readlines但不是split

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

str对象有split但不是readlines

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

要回答你的问题,一个是在一个字符串对象上操作,一个是在一个文件对象上操作。

它们不会做同样的事情,因为在操作文件时返回行列表,而在操作字符串时返回分割行。

答案 2 :(得分: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']