我试图通过阅读使用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。
答案 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
并迭代它,或者更好的是,只是遍历文件本身,永远不要将整个事物读入内存。