Как мне закодировать символ градуса, чтобы я вставил его в книгу Xlwt? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь записать символы степени в рабочую книгу с помощью xlwt, но я получаю дополнительный символ в ячейке, который выглядит следующим образом -> S 58 ° 15'31 "W, но должен быть таким -> S 58 °15'31 "W

Вот функция, которую я использую для создания подшипника.

def returnBearingString(azimuth):
bearing=None
dmsbearing=None
if azimuth>270 and azimuth<=360:
    bearing = 360 - azimuth
    dmsbearing=ddToDms(bearing)
    dmsbearing = """N {0}°{1}'{2}" W""".format(int(dmsbearing[0]),int(dmsbearing[1]),int(round(dmsbearing[2],0)))
    return dmsbearing
if azimuth>=0 and azimuth<=90:
    dmsbearing=ddToDms(azimuth)
    dmsbearing = """N {0}°{1}'{2}" E""".format(int(dmsbearing[0]),int(dmsbearing[1]),int(round(dmsbearing[2],0)))
    return dmsbearing
if azimuth>90 and azimuth<=180:
    bearing= 180 - azimuth
    dmsbearing=ddToDms(bearing)
    dmsbearing = """S {0}°{1}'{2}" E""".format(int(dmsbearing[0]),int(dmsbearing[1]),int(round(dmsbearing[2],0)))
    return dmsbearing
if azimuth>180 and azimuth<=270:
    bearing = azimuth-180
    dmsbearing=ddToDms(bearing)
    dmsbearing = """S {0}°{1}'{2}" W""".format(int(dmsbearing[0]),int(dmsbearing[1]),int(round(dmsbearing[2],0)))
    return dmsbearing

Вот функция, чтобы превратить азимут дд в дмс

def ddToDms(dd):
negative = dd<0
dd=abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
if negative:
    if degrees>0:
        degrees = -degrees
    elif minutes>0:
        minutes = -minutes
    else:
        seconds = -seconds
return (int(degrees),int(minutes),round(seconds,3))

Вот моя рабочая тетрадь

workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet("""SEC {0} BLK {1}""".format(sec,blk))
bear  = returnBearingString(az)
sheet.write(cnt,1,bear,style)
workbook.save(newBook)

Азимут - это просто число от 0 до 360.

...