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