首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:读取上一行并与当前行进行比较

Python:读取上一行并与当前行进行比较
EN

Stack Overflow用户
提问于 2012-01-04 09:41:23
回答 4查看 8.6K关注 0票数 0

Python noob在Windows上使用2.7。我正在用HTML编程制作一个层次结构的树视图。我有一个类似下面输出的文件:

代码语言:javascript
运行
复制
0
  2
    4
      6
        8
        8
0
  2
    4
    4
      6
        8
        8
      6
      6

out.txt看起来像这样:

代码语言:javascript
运行
复制
0
2
4
6
8
8
0
2
4
4
4
6
8
8
6
6

我的代码:

代码语言:javascript
运行
复制
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_linecurrent_line进行比较时,都得不到所需的输出。我可以做一些像if prev_line == "0": print "Root"这样的事情,但它不会工作,因为它只适用于这种情况。此外,似乎在下一次电流完成之前,正在计算if部分。我从当前代码中获得的结果包括:

代码语言:javascript
运行
复制
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:“时出现了一个错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-04 09:44:31

在for循环结束时,将prev_line设置为current_line的值。

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-01-04 10:29:49

您错误地声明了prev_line。如果current_line读取为'0\n‘,则prev_line为'0’。并且prev_line永远不会比current_line更大。尝试将prev_line声明为整行。

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2012-01-04 17:49:16

将代码更改为:

代码语言:javascript
运行
复制
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循环。

代码语言:javascript
运行
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8721040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档