简体   繁体   中英

difference between readlines() and split() [python]

imagine we have a file = open("filetext.txt", 'r')

what is the difference between the split() method and the readlines() method It seems that both split each line and put it as a string in a list. so what makes them different ?

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

readlines splits the entire file into lines and is equivalent to file.read().split('\\n') , but is a bit more efficient. Your example,

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

splits each line by its spaces, building a list of words in the line. value is overwritten on each iteration so unless you save values somewhere, only parts of the file are in-memory at a single time.

This is the main difference:

A file object has readlines but not split :

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

A str object has split but not readlines :

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

And to answer your question, one is operating on a string object and one is operating on a file object.

They don't do the same thing since one returns a list of lines when operating on a file and one returns a split line when operating on a string.

readlines does platform agnostic line splitting and split does generic splitting.

As an example:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM