代码之家  ›  专栏  ›  技术社区  ›  AFF

更换和剥离功能

  •  0
  • AFF  · 技术社区  · 7 年前

    我试图创建一个函数来替换给定字符串中的一些值,但收到以下错误: 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)
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   Chen A.    7 年前

    使用 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 方法将删除 /

    (pattern)? 您可以将模式定义为可选模式。你想说多少就说多少。

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

    笔记 这个 rstrip公司 方法将删除 所有尾部斜杠 ,而不仅仅是一个。如果只想删除最后一个字符,则需要If语句:

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

    if语句使用对字符串的索引访问,-1表示最后一个字符。赋值是通过切片进行的,直到最后一个字符。