Я хочу прочитать файл VCF, который содержит имена с персидскими символами в кодировке UTF8:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=D8=B9=D9=84=D9=89=20=D9=85=D8=B1=D8=AD=D9=85=D8=AA=D9=89;;;
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=D8=B9=D9=84=D9=89=20=D9=85=D8=B1=D8=AD=D9=85=D8=AA=D9=89
TEL;CELL;PREF:123456789
END:VCARD
Код:
file = open('./contact.vcf', 'r', encoding="utf-8")
contacts = []
for line in file:
name = re.findall('FN:(.*)', line)
nm = ''.join(name)
if len(nm) == 0:
continue
data = {'name': nm.strip()}
for lin in file:
tel = re.findall('TEL;CELL;?(?:PREF)?:(.*)', lin)
tel = ''.join(tel)
if len(tel) == 0:
continue
tel = tel.strip()
tel = ''.join(e for e in tel if e.isalnum())
data['phone'] = tel
break
contacts.append(data)
Когда дело доходит до персидских имен, это пусто и сделано перерыв Но должен быть более элегантный способ? Может ли кто-нибудь указать мне в этом направлении?