我有一个文件,它有两列,分别是国家名称和大写字母。我对名字中有空格的大写字母有疑问。 我试图转换为字典的文件如下所示
Afghanistan Kabul
Albania Tirana
Algeria Algiers
Andorra Andorra la Vella
我使用的代码是
countries_dict = {}
countries_file = open("countrieslist.txt")
for line in countries_file:
key, value = line.split()
countries_dict[key] = value
print(countries_dict)
当我运行代码时,我得到以下错误-ValueError:要解包的值太多(预期为2个)
我发现,当我删除安道尔及其首都时,它解决了这个问题,但我需要一种方法,让它包括有空格的首都。这样我就能得到一本这样的字典
{'Afghanistan': 'Khabul', 'Albania': 'Tirana', 'Algeria': 'Algiers', 'Andorra': 'Andorra la Vella'}
函数
str.split
可以接受一个参数maxsplit
,在本例中,您可以将该参数指定为maxsplit=1
,这样您可以将名称作为国家作为第一部分,将首都作为第二部分,即使首都本身包含空格当然,如果国家名称本身包含空格(例如^{),这并不能解决问题。另一个选项是使用不同的字符作为分隔符,以便在空格字符分隔列或单词时不会产生歧义。例如,如果列以制表符分隔,则可以使用
该文件似乎是固定宽度的文件,因此在固定列上分割该行。请注意,国家名称中也可以有空格:
countrieslist.txt:
输出:
这不是一种格式良好的数据格式,因此您必须根据观察结果进行一些黑客攻击。由于国家和城市的名称中都可以有空格,因此简单的拆分是行不通的。但是中间的空间呢?如果至少有两个,你就得到了你所需要的。使用在2个或更多空格上拆分的正则表达式
这可以缩短为
相关问题 更多 >
编程相关推荐