You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取CSV实现WhatsApp自动群发时字符串拼接报错排查

问题描述

尝试使用GitHub上的python-bulk-whatsapp-message-automation-excel库实现WhatsApp自动群发时,遇到字符串拼接错误。

用到的leads.csv数据:

LeadNumber,Message
91_98888888647,None
91_98888888647,Message Sent by Whatsapp Bot 1
91_98888888647,Message 2
91_98888888647,Testing 3
91_98888888647,Message 4
91_98888888647,Message Sent by Whatsapp Bot

实现代码:

import pyautogui as pg
import webbrowser as web
import time
import pandas as pd
data = pd.read_csv("leads.csv")
data_dict = data.to_dict('list')
leads = data_dict['LeadNumber']
messages = data_dict['Message']
combo = zip(leads,messages)
first = True

for lead, message in combo:
    time.sleep(4)
    web.open("https://web.whatsapp.com/send?phone="+lead+"&text="+message)
    if first:
        time.sleep(6)
        first=False
    width, height = pg.size()
    pg.click(width/2,height/2)
    time.sleep(8)
    pg.press('enter')
    time.sleep(8)
    pg.hotkey('ctrl', 'w')

报错信息:

C:\Users\ursab\PycharmProjects\WaBlast\venv\Scripts\python.exe C:/Users/ursab/PycharmProjects/WaBlast/main.py 
Traceback (most recent call last):
  File "C:\Users\ursab\PycharmProjects\WaBlast\main.py", line 14, in <module>
    web.open("https://web.whatsapp.com/send?phone="+lead+"&text="+message)
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
TypeError: can only concatenate str (not "int") to str

Process finished with exit code 1

疑惑点:CSV中LeadNumber列在Excel里是字符串类型,是否需要进行类型转换?


解决建议
  1. 强制指定LeadNumber列的字符串类型
    pandas读取CSV时会自动推断数据类型,即使Excel里显示为字符串,CSV中的91_xxxx格式可能被解析为整数(下划线被识别为千位分隔符),导致类型不匹配。读取时显式指定类型:
data = pd.read_csv("leads.csv", dtype={"LeadNumber": str})
  1. 处理Message列的None值
    CSV中第一条消息为None,属于NoneType无法直接和字符串拼接,需转换为字符串或默认值:
# 循环内处理
for lead, message in combo:
    message = message if message is not None else ""  # 替换为空字符串
    # 或者直接转字符串:message = str(message)

也可以在读取CSV时直接填充空值:

data = pd.read_csv("leads.csv", dtype={"LeadNumber": str}).fillna({"Message": ""})
  1. 改用f-string拼接URL并处理URL编码
    直接拼接字符串容易出现类型问题,且消息中的空格等特殊字符会导致WhatsApp链接失效,建议使用f-string结合URL编码:
import urllib.parse  # 导入URL编码模块

for lead, message in combo:
    message = message if message is not None else ""
    # 对消息内容进行URL编码
    encoded_message = urllib.parse.quote(message)
    # 用f-string拼接URL
    url = f"https://web.whatsapp.com/send?phone={lead}&text={encoded_message}"
    web.open(url)
  1. 完整修正后的代码
import pyautogui as pg
import webbrowser as web
import time
import pandas as pd
import urllib.parse

# 读取CSV并指定类型、填充空值
data = pd.read_csv("leads.csv", dtype={"LeadNumber": str}).fillna({"Message": ""})
data_dict = data.to_dict('list')
leads = data_dict['LeadNumber']
messages = data_dict['Message']
combo = zip(leads, messages)
first = True

for lead, message in combo:
    time.sleep(4)
    # 编码消息并生成URL
    encoded_message = urllib.parse.quote(message)
    url = f"https://web.whatsapp.com/send?phone={lead}&text={encoded_message}"
    web.open(url)
    
    if first:
        time.sleep(6)
        first = False
    
    width, height = pg.size()
    pg.click(width/2, height/2)
    time.sleep(8)
    pg.press('enter')
    time.sleep(8)
    pg.hotkey('ctrl', 'w')

内容的提问来源于stack exchange,提问作者Chris Hutagalung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:16:38