我对Python很陌生,在这段代码中,我试图编写一个代码来读取包含城市列表及其各自的经度和纬度的文本文件,然后将它们作为包含城市列表的字典返回。城市,包括其经度和纬度。
文本文件如下所示:
Name: Koln Latitude: 4° 45' N Longitude: 2° 55' W
Name: Amersfoort Latitude: 1° 23' N Longitude: 2° 23' E
我的代码是这样的:
import re
def controller(filename):
citydict = {}
filevar = open(filename, 'r')
for line in filevar:
city = delegate(line)
citydict[city[0]] = city
filevar.close()
return citydict
def delegate(ln):
pattern = "Name: (.*) Latitude: (.*)? (.*)' (.) Longitude: (.*)? (.*)' (.)"
matcher = re.compile(pattern)
match = matcher.search(ln)
name = match.group(1)
latitude = match.group(2), match.group(3), match.group(4)
longitude = match.group(5), match.group(6), match.group(7)
city = (name, latitude, longitude)
return city
print controller('cities.txt')
代码运行良好,但不知何故,得到了奇怪的输出,如 2\xb 。有人知道这意味着什么以及如何解决它们吗?
{'Koln': ('Koln', ('4\xb0', '45', 'N'), ('2\xb0', '55', 'W')), 'Amersfoort': ('Amersfoort', ('1\xb0', '23', 'N'), ('2\xb0', '23', 'E'))}
最佳答案
您的正则表达式有错误。 ?
表示匹配前一个表达式 (.*)
零次或一次。
(.*)?
如果度数字符始终存在,您可以这样做:
(.*).
关于Python - 字符串中的 xb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526966/