Django 查找并删除/替换较大字符串的一部分

Django 查找并删除/替换较大字符串的一部分

问题描述

在我的Python/Django项目中,我想编写一个自定义的异常类,在此类中,我想避免向最终用户显示一些内容。

在下面的错误消息中,如果您看到项目名称 prj-eng-d-nc-prcd-1077 出现。我希望在消息传递给用户界面之前将其删除。

我尝试过查找和替换。例如:

prj_name = 'prj-eng'
if prj_name in msg:
  msg = msg.replace(prj_name, '')

print (msg)

但这里的问题是项目名称是动态的。它可以是 prj-eng-h-nc-raw-1637 或者 prj-eng-p-nc-oauth-2218

我还尝试使用rfind()方法来查找子字符串的起始位置并替换,但没有帮助。

请问有人可以帮我解决这个问题吗?

    {
        "jobs": [],
        "error": "Unable to process the request",
        "msg": "400 Bad int64 value: prj-eng-d-nc-prcd-1077\n\nLocation: us-central1\nJob ID: f8fc4fde-280b-4f35-ae9e-5fb92d2d0873\n" 
}

输入将是:

msg = "400 Bad int64 value: prj-eng-d-nc-prcd-1077\n\nLocation: us-central1\nJob ID: f8fc4fde-280b-4f35-ae9e-5fb92d2d0873\n"

输出应为:

msg =  "400 Bad int64 value: \n\nLocation: us-central1\nJob ID: f8fc4fde-280b-4f35-ae9e-5fb92d2d0873\n"

解决方案

要从自定义异常类的字符串中删除动态子字符串,您可以使用正则表达式匹配子字符串,并用空字符串替换它。

import re

class CustomException(Exception):
    def __init__(self, msg):
        # Remove project name from error message
        project_name_pattern = r'prj-eng(-\w+)*-\d+'
        self.msg = re.sub(project_name_pattern, '', msg)

#Example try: raise CustomException(‘400 Bad int64 value: prj-eng-d-nc-prcd-1077\n\nLocation: us-central1\nJob ID: f8fc4fde-280b-4f35-ae9e-5fb92d2d0873\n’) except CustomException as e: print(e.msg)

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程