Python将字符串转换为小写,除了一些特殊字符串

Erd*_*dem 0 python string lowercase

我想将一个字符串转换为小写但如果这个字符串包含一个特殊的单词,它应该保留原样.

specialwords = ['Special1', 'Special']
Run Code Online (Sandbox Code Playgroud)

假设我们的输入字符串是这样的:

Ali is really Special.
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

ali is really Special
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止使用的代码.

def makeUrl(inputString):
    list =  {"?": "i",
             "I": "?",
             "?": "?",
             "î": "i",
             "Ç": "c",
             "ç": "c",
             " ": "-",
             "?": "s",
             "?": "s",
             "?": "g",
             "?": "g",
             "Ü": "u",
             "ü": "u",
             "Ö": "o",
             "ö": "o",
             "!": "",
             "?": "",
             "'": "",
             "“": "",
             "”": "",
             "â": "a"}

    inputString = inputString.encode('utf8', 'replace')

    for letter in list:
        inputString = inputString.replace(letter, liste[letter])
    if "Ali" in inputString:
        return inputString
    else:
        return inputString.lower()
Run Code Online (Sandbox Code Playgroud)

abh*_*kdm 6

specialwords = ['Special1', 'Special']
string = "Ali is really Special"

toLower = lambda x: " ".join( a if a in specialwords else a.lower()
            for a in x.split() )

print (toLower(string))
# ali is really Special
Run Code Online (Sandbox Code Playgroud)

如果有任何标点符号string,您可以轻松地将其删除lambda:

from string import punctuation
p_strip = lambda x: "".join(w for w in x if w not in punctuation)

string = "Ali is really Special."

# Now `toLower` function should look something like this:
toLower = lambda x: " ".join( a if p_strip(a) in specialwords else a.lower()
    for a in x.split() )
Run Code Online (Sandbox Code Playgroud)