1

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

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

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

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

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

4

3 回答 3

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`
于 2013-06-24T21:17:30.230 回答
0

Python 不懂英语:调用变量line并不会神奇地将其变成一行。在这种情况下,它实际上是一个行列表,因为这就是readlines()返回的内容。您想命名您的变量lines并对其进行迭代,或者更好的是,只对文件本身进行迭代,从不将整个内容读入内存。

于 2013-06-24T21:23:30.747 回答
0

尝试这个:

with contextlib.nested(open("inpfile","r"), open("numberAmpdus", "w")) as (inf, ouf):  
     lines = inf.readlines()   
         for line in lines:     
             ampdu = line.split()
于 2013-06-24T21:20:06.180 回答