替换和删除功能

Function for Replace And Strip

我正在尝试创建一个函数来替换给定字符串中的某些值,但我收到以下错误:EOL while scanning single-quoted string.

不确定我做错了什么:

 def DataClean(strToclean):
        cleanedString = strToclean
        cleanedString.strip()
        cleanedString=  cleanedString.replace("MMMM/", "").replace("/KKKK" ,"").replace("}","").replace(",","").replace("{","")
        cleanedString = cleanedString.replace("/TTTT","")
        if cleanedString[-1:] == "/":
           cleanedString = cleanedString[:-1]

        return str(cleanedString)

您可以使用 regex 模块通过更简单的解决方案来实现这一点。定义一个匹配任何 MMM//TTT 的模式,并将其替换为 ''.

import re

pattern = r'(MMM/)?(/TTT)?'

text = 'some text MMM/ and /TTT blabla'
re.sub(pattern, '', text)
# some text and blabla

在你的函数中它看起来像

import re

def DataClean(strToclean):
       clean_str = strToclean.strip()
       pattern = '(MMM/)?(KKKK)?'
       new_str = re.sub(pattern, '', text)
       return str(new_str.rstrip('/'))

rstrip 方法将删除字符串末尾的 /,如果有的话。 (删除 if 的需要)。

使用您在字符串中搜索的所有模式构建模式。使用 (pattern)? 将模式定义为可选。你想说多少就说多少。

它比连接字符串操作更具可读性。

注意 rstrip 方法将删除所有尾部斜杠,而不仅仅是一个。如果你只想删除最后一个字符,你需要一个 if 语句:

if new_str[-1] == '/':
    new_str = new_str[:-1]

if 语句使用索引访问字符串,-1 表示最后一个字符。分配发生在切片中,直到最后一个字符。