gpt4 book ai didi

python - 使用python和re库读取vcf文件数据

转载 作者:行者123 更新时间:2023-12-04 17:40:53 25 4
gpt4 key购买 nike

这里是.vcf文件数据里面的内容。

BEGIN:VCARD
VERSION:4.0
N:Muller;CCCIsabella;;;
FN:Muller
ORG:Bubba Gump Shrimp Co.
TITLE:Shrimp Man
PHOTO;MEDIATYPE=image/gif:http://www.example.com/dir_photos/my_photo.gif
TEL;TYPE=work,voice;VALUE=uri:tel:+16829185770
REV:20080424T195243Z
END:VCARD

BEGIN:VCARD
VERSION:4.0
N:Mraz;CCCEdwardo;;;
FN:Mraz
ORG:Bubba Gump Shrimp Co.
TITLE:Shrimp Man
PHOTO;MEDIATYPE=image/gif:http://www.example.com/dir_photos/my_photo.gif
TEL;TYPE=work,voice;VALUE=uri:tel:+18083155095
REV:20080424T195243Z
END:VCARD

BEGIN:VCARD
VERSION:4.0
N:Reynolds;CCCBrant;;;
FN:Reynolds
ORG:Bubba Gump Shrimp Co.
TITLE:Shrimp Man
PHOTO;MEDIATYPE=image/gif:http://www.example.com/dir_photos/my_photo.gif
TEL;TYPE=work,voice;VALUE=uri:tel:+15089473508
REV:20080424T195243Z
END:VCARD

我想要我的数据如下。

data = [{'name': 'Muller','phone': '+16829185770'}, {'name': 'Mraz', 'phone': '+18083155095'}, {'name': 'Reynolds','phone': '+15089473508'}]

但是我没有得到上面的数据。在这种情况下请帮帮我。这里我是用re python包来解决的。

import re
file = open('contacts.vcf', 'r')
contacts = []
for line in file:
name = re.findall('FN:(.*)', line)
tel = re.findall('tel:(.*)', line)
nm = ''.join(name)
tel = ''.join(tel)
if len(nm) == 0 and len(tel) == 0:
continue
data = {'name' : nm, 'phone' : tel}
contacts.append(data)
print(contacts)

得到下面的结果名称和电话是不同的添加。

[{'name': 'Muller', 'phone': ''}, {'name': '', 'phone': '+16829185770'}, {'name': 'Mraz', 'phone': ''}, {'name': '', 'phone': '+18083155095'}, {'name': 'Reynolds', 'phone': ''}, {'name': '', 'phone': '+15089473508'}]

最佳答案

你可以试试下面的代码。

import re
file = open('vcards-2.vcf', 'r')
contacts = []
phone = []
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('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)

print(contacts)

你会得到以下结果

[{'name': 'Muller','phone': '+16829185770'}, {'name': 'Mraz', 'phone': '+18083155095'}, {'name': 'Reynolds','phone': '+15089473508'}]

关于python - 使用python和re库读取vcf文件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com