从文本文件中逐行提取数据并将其存储在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的列表中[重复]的主要内容,如果未能解决你的问题,请参考以下文章