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

Python convert a string to lowercase except some special strings

我想将字符串转换为小写,但如果该字符串包含特殊单词之一,则应保持原样。

specialwords = ['Special1', 'Special']

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

Ali is really Special.

输出应该是这样的:

ali is really Special

这是我目前使用的代码。

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()
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

如果 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() )