2016-10-27 2 views
0

문자열을 소문자로 변환하고 싶지만이 문자열에 특수 문자 중 하나가 포함되어 있으면 그대로 두어야합니다.파이썬은 일부 특수 문자열을 제외하고 문자열을 소문자로 변환합니다.

specialwords = ['Special1', 'Special'] 

은의 우리의 입력 문자열이 같다 가정 해 봅시다 :

Ali is really Special. 

출력은 다음과 같이해야한다 : 여기

ali is really Special 

내가 지금까지 사용했던 코드입니다.

string의 모든 문장 부호의 경우
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() 
+0

나는 특별한 단어가 문자열에 있는지 여부를 확인하는 내가 좋겠 변환하고 싶습니다. 다음과 같이 :'Special 'in inputString : return inputString' – Erdem

+0

질문에 시도한 코드를 게시하십시오. –

답변

3
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 

, 당신은 쉽게 간단한 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()) 
+0

if use string = "Ali는 정말 특별합니다." – Hydex

+0

그런 경우 구두점을 제거해야합니다. –

+0

빈 칸을 유지해야하는 경우 – Hydex

관련 문제