[python] 문자열 속 특정 문자 찾기

조회수 6610회
infile=open("python_07_05.txt",'w')

words="aa"
while(words!="Q"):
    words=input()
#words.split()    
word=input()

if words.find(word):
    infile.write("find word : "+word)

infile.close()

outfile=open("python_07_05.txt",'r')
text=outfile.read()
print(text)
outfile.close()

다음과 같은 코드에서 words에 "I heard that you're settled down"같은 데이터를 입력하고 word 에 you를 입력해서 검색했을떄 검색이 안되게 하는 방법이 있을까요? you're을 한 단어로 인식해서 you만 검색하면 검색이 안되게 하고 싶습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 우선 아래 코드는 잘못된 코드 입니다.

    if words.find(word):
    

    find 함수는 문자열을 찾아 position을 return 해주는데, 찾지 못한 경우 -1을 return 합니다.

    False : 0

    True : 0 이 아닌 모든 수

    위와 같이 -1True입니다.

    즉, 찾지 못한 경우에도 if block 내부가 실행되는 것이죠.

    의도한대로 찾은 경우에만 if block 내부가 실행되도록 하려면 아래와 같이 코딩해야 합니다.

    if words.find(word) >= 0:
    

    you 와 you're 를 구분해서 찾고 싶은 경우 정규표현식(Regular Expression)을 쓰면 해결이 되지만 보다 간단한 방법으로는 찾고자 하는 문자열 앞뒤로 공백을 주면 구현 가능합니다.

    find 할 때 word 앞 뒤로 공백을 넣고 해보세요.

    아래와 같이 하면 you're는 찾지 못합니다.

    if words.find(" you ") >= 0:
        print("find word")
    

    추가)

    아래 코드 참고하세요

    words = "I heard that you're settled down"
    word = "you"
    
    if words.find(" " + word + " ") >= 0:
        print("find word")
    

    나머지 부분은 조금만 고민하시면 충분히 스스로 하실 수 있으실거에요

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)