2017-12-20 3 views
0

여러 형식 문자열을 대문자로 바꾸는 함수를 작성해야합니다.파이썬에서 여러 문자열을 하나의 문자열로 바꾸려면 어떻게해야합니까?

예를 들어 단락에 '무언가', 'SomeThing', 'SOMEETHING', 'SomeTHing'과 같은 형식으로 단어 '무언가'가 포함되어 있으면 모든 형식 단어를 소문자 '무언가'로 변환해야합니다.

downcase로 바꾸는 방법은 무엇입니까?

+1

안녕하세요, Prasanna. 지금까지 시도한 것을 보여주기 위해 몇 가지 샘플 코드를 게시 할 수 있습니까? – GaneshTata

+0

효율적이지 않은 대체 방법을 사용하고 있습니다. 예 : output.replace ("SomeThing", "something"). replace ("SomeTHing", "something") – Prasanna

답변

2

그런 다음"무엇인가"와 비교, 각 단어의 슬러그를 생성하는 slugify 모듈을 사용하고, 일치가있는 경우, "뭔가"로 단어를 대체, 다른 단어로 단락을 분할 할 수 있습니다.

In [1]: text = "This paragraph contains Something, SOMETHING, AND SomeTHing" 

In [2]: from slugify import slugify 

In [3]: for word in text.split(" "): # Split the text using space, and iterate through the words 
    ...:  if slugify(unicode(word)) == "something": # Compare the word slug with "something" 
    ...:   text = text.replace(word, word.lower()) 

In [4]: text 
Out[4]: 'This paragraph contains something, something AND something' 
+0

이제 출력 텍스트에 쉼표, 점 등이 없습니다. 그것은 바람직하지 않았습니다. – Psytho

+0

@Psytho 멋진 잡기. 이제 그것을 바로 잡았다. – GaneshTata

1

텍스트를 한 단어로 분리하고 소문자로 쓰여진 단어가 "무언가"인지 확인하십시오. 예, 다음 낮은 경우를 변경하는 경우

if word.lower() == "something": 
    text = text.replace(word, "something") 

단어로 텍스트를 분할하는 방법을 알고하려면 this question를 참조하십시오.

또 다른 방법은 하나의 문자를 통해 반복하고 편지는 "무엇인가"의 첫 글자인지 여부를 확인하는 것입니다 : 단어와 구두점으로 단락을

text = "Many words: SoMeThInG, SOMEthING, someTHing" 
for n in range(len(text)-8): 
    if text[n:n+9].lower() == "something": # check whether "something" is here 
     text = text.replace(text[n:n+9], "something") 

print text 
+0

두 번째 방법은 간단하고 우아합니다. 그것에 대해 생각하지 않았어! – GaneshTata

+0

텍스트가 매우 길면 속도가 느려질 수 있습니다. – Psytho

1

당신은 또한 검색 re.findall를 사용할 수는 분할하고, 소문자 버전으로 "Something"의 모든 다른 경우 대체 :

import re 

text = "Something, Is: SoMeThInG, SOMEthING, someTHing." 

to_replace = "something" 

words_punct = re.findall(r"[\w']+|[.,!?;: ]", text) 

new_text = "".join(to_replace if x.lower() == to_replace else x for x in words_punct) 

print(new_text) 

출력한다 :

참고 :re.findall에는 문자열의 내용을 검색하기 위해 하드 코드 된 일반 표현식이 필요합니다. 실제 텍스트에는 위의 정규 표현식에없는 문자가 포함될 수 있으므로 필요에 따라 문자를 추가해야합니다.

관련 문제