在file.readines()发出错误后split()

时间:2013-06-24 21:16:36

标签: python

我试图通过阅读使用readlines()来使用split()。我的部分代码如下:

with contextlib.nested(open("inpfile","r"), open("numberAmpdus", "w")) as (inf, ouf):
    line = inf.readlines()
    ampdu = line.split()  

这是不是在使用readlines()读取行后应用split的方法?在运行程序时,我收到一个错误:

AttributeError: 'list' object has no attribute 'split'  

我应该在哪里更改代码?我使用的是python2.6。

3 个答案:

答案 0 :(得分:4)

file.readlines()会返回所有行的列表,列表中没有任何split方法,这就是您收到该错误的原因。

lines = inf.readlines()

如果您尝试将str.split应用于lines的每个项目,则必须迭代此列表并逐个将str.split应用于每个项目。

ampdu = [x.split() for x in lines] # Applies `str.split` to each item of lines.
                                   # This create a new list, a list of lists
                                   # as `str.split` returns a list itself.    

或:

for line in lines:
    ampdu = line.split()
    #now do something with `ampdu`

答案 1 :(得分:0)

试试这个:

with contextlib.nested(open("inpfile","r"), open("numberAmpdus", "w")) as (inf, ouf):  
     lines = inf.readlines()   
         for line in lines:     
             ampdu = line.split()

答案 2 :(得分:0)

Python不懂英语:调用变量line并不会让它成为一条线。在这种情况下,它实际上是行的列表,因为这是readlines()返回的内容。你想要命名你的变量lines并迭代它,或者更好的是,只是遍历文件本身,永远不要将整个事物读入内存。