Python如何从CSV文件批量生成Vcard二维码?扫描仅识别URL求助
问题排查与修复方案
错误原因
你的二维码无法正常识别完整VCARD信息,是代码构造VCARD内容时存在3个格式错误导致的:
- 多余的双引号:三引号内部每一行VCARD字段外都额外包裹了双引号,这些引号会直接写入二维码内容,不符合VCARD标准规范,导致解析器识别中断
- 多余的缩进与空行:三引号开头的空行、每行VCARD字段前的空格缩进都会被写入内容,破坏VCARD的结构化格式
- FN字段格式错误:姓名字段用了
+拼接,不符合VCARD姓名展示规范,也会干扰部分解析器的识别逻辑
修正后可正常运行的代码
import pyqrcode import pandas as pd def createQRCode(): # 此处替换为你的CSV文件实际路径 df = pd.read_csv("havas.csv") for index, values in df.iterrows(): lastname = values["lastname"] firstname = values["firstname"] title = values["title"] phone = values["phone"] email = values["email"] website = values["website"] org = values["org"] street = values["street"].strip() # 去除地址字段可能存在的前后空格 city = values["city"] p_code = values["p_code"] country = values["country"] # VCARD内容顶格写,无多余引号、无多余缩进 data = f"""BEGIN:VCARD VERSION:3.0 N:{lastname};{firstname};;; FN:{firstname} {lastname} TITLE:{title} TEL;TYPE=work,VOICE:{phone} EMAIL;TYPE=WORK:{email} URL:{website} ORG:{org} ADR;TYPE=work,PREF:;;{street};{city};{p_code};{country} END:VCARD""" image = pyqrcode.create(data, encoding='utf-8') image.svg(f"{lastname}_{firstname}.svg", scale="5") # 可选:生成PNG格式,需要提前安装pypng库:pip install pypng # image.png(f"{lastname}_{firstname}.png", scale=5) createQRCode()
验证建议
修改代码后可以先打印单条data内容,确认格式正确后再批量生成二维码:
- 取出打印的data内容,复制到VCARD解析工具验证字段是否完整
- 生成单个二维码测试扫描,确认所有字段都能正常识别后再批量运行
内容的提问来源于stack exchange,提问作者Nick_S
相关产品推荐
相关产品推荐

