将此字符串转换为 Python 中的列表

Convert this String to a List in Python

我是 Python 的新手,我尝试将以下 txt 转换为两个列表,将 Country 与 Capital 分开。

Afghanistan | Kabul
Albania | Tirana
Algeria | Algiers
...

我试过了:

with open("/FILE.txt") as f:
    lines = f.read().split("| ")

如果您有类似 string="Kabul Albania" 的字符串,请使用 Split

a="Kabul Albania"
print(a.split(" ")) #OUTPUT WILL BE ['Kabul', 'Albania']

您正在将整个文件读入一个大字符串,然后在分隔符上拆分它。结果看起来像

lines = ['Afghanistan', 'Kabul\nAlbania', 'Tirana\nAlgeria', 'Algiers']

如果您想将文件拆分成行,splitlines 函数可以做到这一点。

with open("/FILE.txt") as f:
    lines = f.read().splitlines()

但是如果你想把一个列表分成两个列表,也许可以试试

countries = []
capitals = []
with open("/FILE.txt") as f:
    for line in f:
        country, capital = line.rstrip("\n").split(" | ")
        countries.append(country)
        capitals.append(capital)

更好的解决方案可能仍然是将值读入字典。

capital = {}
with open("/FILE.txt") as f:
    for line in f:
        country, city = line.rstrip("\n").split(" | ")
        capital[country] = city

顺便说一句,您几乎可以肯定 OS 的根目录中不应该有数据文件。这个位置是为管理文件保留的(或者实际上,实际上,只是目录树层次结构的第一级)。

这应该可以, 你做对了第一部分只需要将结果添加到两个不同的列表

country = []
capitals = []
with open("FILE.txt", "r") as f:
    for line in f:
        result = line.strip().split("|")
        country.append(result[0].strip())
        capitals.append(result[1].strip())

print(country)
print(capitals)