替换和剥离功能

时间:2017-10-12 22:00:19

标签: python ironpython

我正在尝试创建一个函数来替换给定字符串中的某些值,但我收到以下错误: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 个答案:

答案 0 :(得分:5)

使用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表示最后一个char。赋值发生在切片中,直到最后一个char。