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

2024-09-29 21:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个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

Tags: 方法字符串intxt列表forlineopen
3条回答

这是主要区别:

一个^{}对象有^{}但没有split

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

一个^{}对象有^{}但没有readlines

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

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

它们不会做相同的事情,因为一个在文件上操作时返回一个行列表,一个在字符串上操作时返回一个拆分行。

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

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

按空格分隔每一行,在该行中生成单词列表。value在每次迭代时都会被覆盖,因此除非您将值保存在某个地方,否则在同一时间只有部分文件在内存中。

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']

相关问题 更多 >

    热门问题