ado*_*tyd 1 python arrays file-io loops list
python非常新,无法理解为什么这不起作用.我有一个在文本文件中逐行存储的Web地址列表.我想将前10个存储在名为bing的数组/列表中,将下一个10存储在名为yahoo的列表中,将最后10个存储在名为duckgo的列表中.我正在使用该readlines函数将文件中的数据读入每个数组.问题是没有写入列表.计数正在增加.此外,如果我完全删除循环并只是将整个文本文件读入一个列表,它可以完美地工作.这让我相信循环导致问题.我正在使用的代码如下.真的很感激一些反馈.
count=0;
#Open the file
fo=open("results.txt","r")
#read into each array
while(count<30):
if(count<10):
bing = fo.readlines()
count+=1
print bing
print count
elif(count>=10 and count<=19):
yahoo = fo.readlines()
count+=1
print count
elif(count>=20 and count<=29):
duckgo = fo.readlines()
count+=1
print count
print bing
print yahoo
print duckgo
fo.close
Run Code Online (Sandbox Code Playgroud)
你正在readlines用来读取文件.readlines一次读取所有行,所以第一次循环,你耗尽整个文件并存储结果bing.然后,通过循环每一次,你覆盖bing,yahoo或者duckgo下一个的(空)的结果readlines调用.所以你的清单一直都是空的.
有很多方法可以解决这个问题.除此之外,您应该考虑一次读取一行文件readline(不是's').或者更好的是,您可以逐行遍历文件,只需使用for循环:
for line in fo:
...
Run Code Online (Sandbox Code Playgroud)
要保留当前代码的结构,您可以使用enumerate:
for line_number, line in enumerate(fo):
if condition(line_number):
...
Run Code Online (Sandbox Code Playgroud)
但坦率地说,我认为你应该放弃现有的系统.一种更简单的方法是在readlines没有循环的情况下使用,并对结果列表进行切片!
lines = fo.readlines()
bing = lines[0:10]
yahoo = lines[10:20]
duckgo = lines[20:30]
Run Code Online (Sandbox Code Playgroud)
还有很多其他方法可以做到这一点,有些可能会更好,但没有一种方法更简单!
| 归档时间: |
|
| 查看次数: |
6177 次 |
| 最近记录: |