Use Python para importar la libreta de direcciones de la tabla de Excel a la libreta de direcciones del teléfono móvil

Use Python para importar la libreta de direcciones de la tabla de Excel a la libreta de direcciones del teléfono móvil

problema clave:

El formato del archivo de la libreta de direcciones que utilizan los teléfonos Android es .vcf (debe estar en formato vCard), y la libreta de direcciones del teléfono puede abrir directamente los archivos en este formato e importarlos a la libreta de direcciones del teléfono.

Lo que debemos hacer es: escribir la información en Excel en un archivo .vcf de acuerdo con los requisitos de formato.

Abra el archivo .vcf con un editor de texto de la siguiente manera.

imagen-20220616204751163

Usar python para resolver problemas

directamente en el código


import sys
import os
import re


def csv2vcf_android(csv_filename, encoding='utf-8'):
    """csv格式文件转换为安卓适用的vcf格式文件"""
    # 1.读取csv文件
    with open(csv_filename, 'r', encoding='utf-8') as f:
        ftext_list = f.readlines()
        f.close()
    # 2.将cvs转换为vcf格式
    vcards = ''
    for line in ftext_list[1:]:
        tel_numbers = ''
        name_tel_list = line.strip().split(',')
        if name_tel_list[0]:
            tel_name = name_tel_list[0]  # 姓名
            org = name_tel_list[1]  # 单位
            for tel in name_tel_list[2:]:  # 电话
                tel_numbers += f'TEL;CELL:{
      
      tel}\n'
            vcard = f'BEGIN:VCARD\nN:{
      
      tel_name}\nORG:{
      
      org}\n{
      
      tel_numbers}END:VCARD\n'
            vcards += vcard
    # 3.保存转换后的vcf格式文件
    (fpath, temp_fname) = os.path.split(csv_filename)
    (fname, fextension) = os.path.splitext(temp_fname)
    with open(f'{
      
      fpath}{
      
      fname}_android.vcf', "w", encoding=encoding) as f:
        try:
            f.write(vcards)
        finally:
            f.close()


def csv2vcf_ios(csv_filename, encoding='utf-8'):
    """csv格式文件转换为ios适用vcf格式文件"""
    # 1.读取csv文件
    with open(csv_filename, 'r', encoding='utf-8') as f:
        ftext_list = f.readlines()
        f.close()
    # 2.将cvs转换为vcf格式
    vcards = ''
    for line in ftext_list[1:]:
        # tel_numbers = ''
        name_tel_list = line.strip().split(',')
        if name_tel_list[0]:
            tel_name = name_tel_list[0]  # 姓名
            xing = tel_name[0]  # 姓
            ming = tel_name[1:]  # 名
            # print(xing,ming,len(ming))
            org = name_tel_list[1]  # 单位
            short_tel = name_tel_list[2]
            long_tel = name_tel_list[3]
            vcard = f'BEGIN:VCARD\nVERSION:3.0\nN:{
      
      xing};{
      
      ming};;;\nFN:{
      
      ming} {
      
      xing}\nORG:{
      
      org};\nTEL;TYPE=CELL;TYPE=pref;TYPE=VOICE:{
      
      long_tel}\nTEL;TYPE=WORK;TYPE=VOICE:{
      
      short_tel}\nPRODID:-//Apple Inc.//iCloud Web Address Book 2021B82//EN\nREV:2020-11-26T19:51:27Z\nEND:VCARD\n'
            vcards += vcard
    # 3.保存转换后的vcf格式文件
    (fpath, temp_fname) = os.path.split(csv_filename)
    (fname, fextension) = os.path.splitext(temp_fname)
    with open(f'{
      
      fpath}{
      
      fname}_ios.vcf', "w", encoding=encoding) as f:
        try:
            f.write(vcards)
        finally:
            f.close()


filename = sys.argv[1]
csv2vcf_android(filename)
csv2vcf_ios(filename)


Supongo que te gusta

Origin blog.csdn.net/qq_46084757/article/details/125323762
Recomendado
Clasificación