从文本文件逐行提取数据并在Python中将其存储到列表中

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

enter image description here

我需要使用Python提取所有这些名称,并将它们存储在列表中。 Python代码:
with open('a.txt') as x:
    b = [word for line in x for word in line.split()]
    print(b)

问题:

上面的Python代码完全可以运行,但唯一的问题是如果在任意两个单词之间发现任何空格,则按两个独立单词存储在列表中。而我想逐行检索名称并将整个单词作为单个单词存储。

例如:

我想将单词Antigua&Deps作为一个单独的单词存储在列表内。然而,它将其作为3个不同的单词存储。

请问有谁可以帮我解决这个问题吗?

3个回答

3
你可以直接在文件处理器上使用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的建议。我认为描述性的名称更有意义。 - Austin

2

您只需保留此行:

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

1
如果您想逐行阅读并控制某些内容,则可以使用以下代码。
List = [] 
f = open("countries.txt", "r")
for x in f:
  List.append(x.strip())

f.close()

print(List)

我已经尝试过这种方法。但问题在于每个元素的末尾都会添加 \n,这使得代码的下一部分变得更加困难。 - Vivek
.strip()添加到字符串中,以删除CRLF,并修改代码。 - Dickens A S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接