从文本文件中逐行提取数据并将其存储在python的列表中[重复]

Posted

技术标签:

【中文标题】从文本文件中逐行提取数据并将其存储在python的列表中[重复]【英文标题】:extracting data line by line from a text file and storing it in a list in python [duplicate] 【发布时间】: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 个不同的单词。

谁能帮我解决这个问题?

【问题讨论】:

【参考方案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的字符串中,修改代码

以上是关于从文本文件中逐行提取数据并将其存储在python的列表中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从文件中逐行读取并存储到二维数组中

在python中逐行读取一个大的压缩文本文件

在python中逐行迭代一个大的.xz文件

在 Fortran 中逐行读取逗号分隔的文本文件

delphi中怎么逐行读取文本文件的数据并将每行分别写入指定的不同编辑框

Python从txt文件中逐行读取数据