Python - 字符串中的\ xb

时间:2017-10-02 13:57:37

标签: python

我是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'))}

2 个答案:

答案 0 :(得分:1)

你的正则表达式有错误。 ?表示匹配前一个表达式(.*),零或一次。

(.*)?

如果学位角总是在那里,你可以这样做:

(.*).

答案 1 :(得分:0)

它对应于unicode中的°

>>> print u'\xb0'
°