从另一个fi通过索引获取文件中的行

2024-04-20 15:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,第一个是我的大名单:

123 321 231 412
424 244 bear wolf
512 dinosaur 525

第二个是第一个的索引,所以

1   
-1
3

现在我想通过第二个文件的特定索引将第一个文件中的确切行作为输出,注意:如果我有一个'-1',我只想跳过它。你知道吗

所以在这个例子中:

123 321 231 412
512 dinosaur 525

我试过这个:

import linecache

i = open('list_wanted', 'w')

with open ('index_list', 'r') as index:
     for line in index:
          int_index = [int(i) for i in line.split()] # this seems necessary since my index list seems to be in strings, not integers

     for line in int_index:
          if line != ('-1'):
               i.write(linecache.getline('big_list' , line))

我真的不想在我的记忆中的整个大\u列表,所以linecache似乎很好,但我不能让它正常工作。我做错什么了?你知道吗


:编辑: 第一个答案是正确的,但我现在有一个非常奇怪的结果: 长度不符合我的预期,我添加了一个小柜台w:

import linecache

w = 0

a = open('lines_wanted', 'w')

with open ('index_list', 'r') as index:
     int_index = [int(i), for i in index.readlines()]

     for line in int_index:
          a.write(linecache.getline('big_list', line))
          w = w + 1

print(w)

我写的次数(w)是预期的行数,但是如果我检查我的文件,我会少一些行(预期34752行(这与我的w相同),实际上只有34308行)。 我想这可能是一个重复的问题,我如何才能避免它,并获得我的预期w行在我的文件。 有人有主意吗? 我需要的行数正好与索引列表文件中的行数相同。你知道吗

注:1的情况已经不是问题了,我把它去掉了,所以我的索引列表文件中只有我想要的“好”行。你知道吗

:编辑2: 找到它,我必须在我的write命令中写+1行


Tags: 文件inimport列表forindexwithline
1条回答
网友
1楼 · 发布于 2024-04-20 15:26:15
import linecache

i = open('lines_wanted', 'w')

with open('index_list', 'r') as index:
    # this seems necessary since my index list seems to be in strings, not integers
    int_index = [int(i) for i in index.readlines()]  

    for line in int_index:
        if line != ('-1'):
            i.write(linecache.getline('big_list', line))

问题出在int_index列表上。它并没有像预期的那样形成。你知道吗

相关问题 更多 >