简体   繁体   English

在 python 中枚举 function 的打印元素出现问题

[英]Problem with printing elements of enumerate function in python

This is a part of my python application code which is located in a for loop itself.这是我的 python 应用程序代码的一部分,它位于 for 循环本身中。 It finds every file's name from another text file.它从另一个文本文件中找到每个文件的名称。

When I print i it prints the right line number every time.当我打印i时,它每次都会打印正确的行号。 The problem is with the sen .问题出在sen上。 When I print sen , it prints just a new line( \n ).当我打印sen时,它只打印一个新行( \n )。 Why doesn't it contain every line's content?为什么它不包含每一行的内容?

line_number=1
for line in open(relevant_docs_path, "r",encoding="utf8"):
  
  if line.rstrip('\n') == file_name:
    with open(relevant_docs_path) as fp:
      for i, sen in enumerate(fp):
        if i == line_number+1:
          print(sen)
    break
  else:
    line_number += 1 

and this is my text file(fp):这是我的文本文件(fp):

1.persian_query
7894.persian_poem 7895.persian_poem 7898.persian_poem 7899.persian_poem 7900.persian_poem

2.persian_query
7901.persian_poem 7902.persian_poem

3.persian_query
7901.persian_poem 7902.persian_poem

4.persian_query
7903.persian_poem

5.persian_query
7904.persian_poem 7905.persian_poem 7906.persian_poem 7907.persian_poem 7908.persian_poem 7909.persian_poem 7910.persian_poem 7911.persian_poem 7912.persian_poem 7913.persian_poem 7914.persian_poem 7915.persian_poem 7916.persian_poem 7917.persian_poem 7918.persian_poem 7919.persian_poem 7920.persian_poem 7921.persian_poem 7922.persian_poem 7923.persian_poem 7924.persian_poem

The main problem is that enumerate starts counting at 0 while line_number is initialized at 1. You need to either change line_number to 0 or use enumarate(..., start=1) .主要问题是enumerate从 0 开始计数,而line_number初始化为 1。您需要将line_number更改为 0 或使用enumarate(..., start=1)

Updated code:更新代码:

line_number = 1
for line in open(relevant_docs_path, "r", encoding="utf8"):
  if line.rstrip('\n') == file_name:
    with open(relevant_docs_path) as fp:
      for i, sen in enumerate(fp, start=1):
        if i == line_number+1:
          print(sen)
    break
  else:
    line_number += 1 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM