【问题标题】:To copy lines of a text file to list in python [closed]将文本文件的行复制到python中的列表[关闭]
【发布时间】:2014-11-10 20:13:21
【问题描述】:

我的文件有以下四行:

第一行
二线
三线
第四行
最后一行

我想在这个文件中搜索单词“Third”并将“First line”和“Second line”复制到list1,然后将“Third line”复制到list2,最后复制最后两行“Fourth line”和“最后一行”到一个列表3。

真的,我试图用一个 5 行文件来做这个简单的事情。但实际上,我使用的文件有 1438 行。我正在尝试将此文件复制到 3 个不同的列表中。我希望能够将“SATELITE”之前的所有行复制到一个列表,然后将所有以“SATELITE”开头的行复制到列表 2,最后将结束行复制到列表 3。

我已经使用 readlines 将所有行放在一个列表中,就我所知。

谢谢。

【问题讨论】:

  • 您是否考虑过从文件中读取?你能展示一下你尝试过的东西吗?
  • 想一想您将如何手动执行此操作。例如,您可以逐行进行,将行添加到list1,直到其中一个包含Third,然后将其添加到list2,然后将其余所有行添加到list3。所有这些都可以直接翻译成 Python。它可能不是最简洁的编码方式,但它会起作用。如果您在翻译其中的任何部分时遇到困难,那么您将有一个很好的问题要问。
  • 嗨罗恩,到目前为止我已经这样做了: def ReadContent(): file = open('testing') alllines = file.readlines() for i in alllines(): if i == '第三”:到目前为止我被困在那里。
  • @pedro,用该代码更新问题,以便我们更清楚地看到它。 ...这是 5 行,而不是 4 行。
  • @pedro 你能检查我的答案,看看这是不是你的想法?

标签: python list text


【解决方案1】:

我更喜欢使用具有列表理解的最短版本,如下所示:

with open(file_name) as f: # Default file operation mode is `r'
    items = f.readlines()

    i = [index for index, item in enumerate(items) if item.startswith('Third')]
    list1, list2, list3 = items[:i[0]], [items[i[0]]], items[i[0]+1:]

    print list1
    print list2
    print list3

【讨论】:

    【解决方案2】:

    看下面的代码:

    if "Third" in open(your_file).read()
       print("Found the word!")
       f1 = open(your_file)
       i = 0;
       list1 = [];
       list2 = [];
       list3 = [];
       for line in f1:
          i += 1;
          if (i < 3):
            list1.append(line):
          else if (i == 3):
            list2.append(line);
          else:
            list3.append(line);
    

    这适合你吗?这也只有在文件不大的情况下才有用!!!

    【讨论】:

    • 他不想要第三个条目,他想看看文本是否包含“第三”
    • @user3684792 已编辑答案。道歉
    • 这仍然不能满足 OP 的要求......
    【解决方案3】:

    好的,我只是在窗口中输入了这个,没有尝试(所以可能会有一些小错误)

    def process_file(path):
    
        list_container = [[] for i in range(3)]
        list_index = 0
        with open(path,'r') as text_file:
            for line in file:
    
                if "Three" in line:
                     list_container[1].append(line)
                     list_index = 2
                list_container[list_index].append(line)
        return list_container
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多