想象我们有一个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
答案 0 :(得分:4)
readlines
将整个文件拆分为行,相当于file.read().split('\n')
,但效率更高一些。你的例子,
for line in file:
values = line.split()
按行空间拆分每一行,在行中构建单词列表。每次迭代都会覆盖value
,所以除非你在某处保存值,否则只有部分文件在内存中一次。
答案 1 :(得分:1)
这是主要区别:
>>> print hasattr(file, 'split')
False
>>> print hasattr(file, 'readlines')
True
>>> 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']