Спасибо за помощь.
Привожу код, который сейчас есть. В итоге я хочу парсить тело письма, чтобы доставать оттуда широты и долготы по признаку LAT + число и LON + число соответственно. Но парсер ругается на кодировку (как мне кажется) того, что я ему подаю на вход. Если вместо $content ввести что-нибудь вроде “LAT 30.0 blablabla 123” все будет работать, а вот в случае с текстом сообщения - нет(
# -*- coding: utf-8 -*-
import email
from email.header import decode_header
import sys
from pyparsing import *
f = open(sys.argv[1],"r") # Open message file
m = email.message_from_file(f) # Parse message
charset = m.get_charset()
# Print short summary of sender/recipient
print("From : %s" % m["from"])
to, encode = decode_header(m["to"])[0]
if encode:
to = to.decode(encode)
print("To : %s" % to)
tema, encode = decode_header(m["Subject"])[0]
if encode:
tema = tema.decode(encode)
print("Subject : %s" % tema)
print("")
#Числа
number=Word(".-"+nums)
#Долгота
lon=Regex("LON")+number
#Широта
lat=Regex("LAT")+number
if (tema=="Координаты"):
if not m.is_multipart():
payload = m.get_payload(decode=True)
charset = m.get_content_charset('')
print(payload.decode(charset))
#Строка с сообщением
content=payload.decode(charset)
#Разбор сообщения
llat=lat.parseString(content)
Парсер выдает ошибку:
ParseException: Expected Re:('LAT') (at char 0), (line:1, col:1)