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

Python中从消息体提取特定值及字符清理问题

问题解决优化方案

核心问题分析

现有代码可通过正则提取目标内容,但字符清理逻辑不够精准,易残留冗余字符,同时缺乏异常处理机制——当正则匹配失败时会直接抛出错误,导致服务异常。

优化后的代码实现

import os
from flask import Flask, request, Response
from dotenv import load_dotenv
from twilio.rest import Client 
import re
load_dotenv()

app = Flask(__name__)
twilio_client = Client()

@app.route('/incoming/sms', methods = ['POST'])
def incoming_sms():  
    incoming_message = request.form.get("Body", "")
    
    # 提取目标数据,增加异常防护
    phone_match = re.search(r'!(.*?):', incoming_message)
    whatsapp_to = phone_match.group(1).strip() if phone_match else ""
    
    message_match = re.search(r'%([^=]*?)=', incoming_message)
    extract_message = message_match.group(1).strip() if message_match else ""
   
    # 精准清理特殊字符并整理格式
    body_message = re.sub(r'[+$@&%{}:=!]+', ' ', extract_message).strip()
    body_message = re.sub(r'\s+', ' ', body_message)
             
    twilio_from = os.getenv("TWILIO_FROM_NUMBER")
    # 仅当手机号和消息内容有效时发送
    if whatsapp_to and body_message:
        message = f"TRAKSIFY事件已上报,事件内容:{body_message}"
        twilio_client.messages.create(
            body=message, 
            from_=f"whatsapp:{twilio_from}", 
            to=f"whatsapp:{whatsapp_to}"
        )
    return Response()

if __name__ == '__main__':
    app.run()

关键优化点说明

  • 正则匹配精准化:
    • 用非贪婪模式.*?替代.*,避免匹配超出目标范围的内容
    • 用[^=]*?限定消息内容的匹配范围,确保仅提取%和=之间的字符
    • 对匹配结果调用strip()去除首尾空格
  • 异常安全防护:
    • 使用request.form.get("Body", "")避免键不存在时抛出错误
    • 判断匹配对象是否存在后再提取内容,防止AttributeError
  • 字符清理优化:
    • 用+匹配连续特殊符号,一次性替换为单个空格
    • 增加连续空格合并逻辑,避免内容出现冗余空格
  • 发送逻辑严谨性:
    • 仅在手机号和消息内容都有效时触发发送,避免无效请求

内容的提问来源于stack exchange,提问作者Christian Listl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:04:56