Python noob在Windows上使用2.7。我正在用HTML编程制作一个层次结构的树视图。我有一个类似下面输出的文件:
0
2
4
6
8
8
0
2
4
4
6
8
8
6
6out.txt看起来像这样:
0
2
4
6
8
8
0
2
4
4
4
6
8
8
6
6我的代码:
x = open('out.txt','r')
for current_line in x:
prev_line = current_line[:-1]
print "Current: " + current_line
print "Previous: " + prev_line
if prev_line > current_line:
print "Folder"
elif prev_line == current_line:
print "Root"
x.close()我遇到的问题是,每次我尝试将prev_line与current_line进行比较时,都得不到所需的输出。我可以做一些像if prev_line == "0": print "Root"这样的事情,但它不会工作,因为它只适用于这种情况。此外,似乎在下一次电流完成之前,正在计算if部分。我从当前代码中获得的结果包括:
Current: 0
Previous: 0
Current: 2
Previous: 2
Current: 4
Previous: 4
Current: 6
Previous: 6
Current: 8
Previous: 8
Current: 8
Previous: 8
Current: 0
Previous: 0
Current: 2
Previous: 2
Current: 4
Previous: 4
Current: 4
Previous: 4
Current: 4
Previous: 4
Current: 6
Previous: 6
Current: 8
Previous: 8
Current: 8
Previous: 8
Current: 6
Previous: 6
Current: 6
Previous:我做错了什么?我该如何解决这个问题?我不知道这是不是一个字符串和整数的比较,但如果是的话,我会觉得自己很傻。我已经尝试过了,但它在检查最后一个"Previous:“时出现了一个错误。
发布于 2012-01-04 09:44:31
在for循环结束时,将prev_line设置为current_line的值。
prev_line = ''
for current_line in x:
print "Current: " + current_line
print "Previous: " + prev_line
if prev_line > current_line:
print "Folder"
elif prev_line == current_line:
print "Root"
prev_line = current_line发布于 2012-01-04 10:29:49
您错误地声明了prev_line。如果current_line读取为'0\n‘,则prev_line为'0’。并且prev_line永远不会比current_line更大。尝试将prev_line声明为整行。
prev_line = '0'
for current_line in x:
print "Current: " + current_line
print "Previous: " + prev_line
if prev_line > current_line:
print "Folder"
elif prev_line == current_line:
print "Root"
prev_line = current_line发布于 2012-01-04 17:49:16
将代码更改为:
x = open('out.txt','r')
prev_line='0'
for current_line in x:
print "Current: " + current_line
if prev_line != '':
print "Previous: " + prev_line
if prev_line > current_line:
print "Folder"
elif prev_line == current_line:
print "Root"
prev_line=current_line
x.close()这应该可以解决问题。对于第一行,当前行是'0‘,但没有以前的根,我猜它应该打印’line..so‘。如果我的假设是错误的,那么将prev_ line ='0‘行改为prev_line='’。
为什么不运行一个嵌套的for循环并获取下一行的值。比如在代码开头声明num=1,然后使用运行嵌套的for循环。
x = open('out.txt','r')
prev_line='0'
num=1
for current_line in x:
y=1
for next_line in x:
if y=num+1:
nextline=next_line
y+=1
print "Next Line "+next_line
num+=1
x.close()https://stackoverflow.com/questions/8721040
复制相似问题