【问题标题】:extracting data line by line from a text file and storing it in a list in python [duplicate]从文本文件中逐行提取数据并将其存储在python的列表中[重复]
【发布时间】:2020-07-09 20:06:10
【问题描述】:

我有一个包含不同国家名称的文本文件,如下所示:

我必须提取所有这些名称并使用 python 将它们存储在一个列表中。

Python 代码:

with open('a.txt') as x:
    b = [word for line in x for word in line.split()]
    print(b)

问题: 上面的 python 代码工作得很好,但唯一的问题是,如果它发现任何 2 个单词之间有任何空格,它会将它们作为两个单独的单词存储在一个列表中。然而,我想逐行检索名称并将整个单词存储为单个单词。

例如: 我想将单词 Antigua & Deps 作为单个单词存储在列表中。然而,它将其存储为 3 个不同的单词。

谁能帮我解决这个问题?

【问题讨论】:

    标签: python python-3.x list for-loop


    【解决方案1】:

    你可以保留这条线:

    b = [line.strip() for line in x]
    

    【讨论】:

      【解决方案2】:

      您可以在文件处理程序上直接使用readlines

      with open('a.txt') as x:
          b = x.readlines()
      

      这将在每行的末尾有尾随换行符,您可以通过以下方式避免:

      with open('a.txt') as x:
          b = [line.strip() for line in x]
      

      你为什么会得到你的输出?

      你正在做for word in line.split(),实际上是在每一行的空格上分割。

      【讨论】:

      • 感谢@Vivek 的建议。不过,我会说描述性名称更有意义。
      【解决方案3】:

      如果你想逐行阅读并且想控制一些事情,那么 你可以做这个代码

      List = [] 
      f = open("countries.txt", "r")
      for x in f:
        List.append(x.strip())
      
      f.close()
      
      print(List)
      

      【讨论】:

      • 我试过这个方法。但问题是 \n 被添加到每个元素的末尾,这使得代码的下一部分变得困难。
      • .strip()添加到删除CRLF的字符串中,修改代码
      猜你喜欢
      • 1970-01-01
      • 2020-04-29
      • 2020-06-05
      • 1970-01-01
      • 2014-10-16
      • 2020-02-09
      • 1970-01-01
      • 2018-05-30
      • 2018-02-01
      相关资源
      最近更新 更多