Python 연습 6: 문자열에서 특수 문자 제거

6562 단어 pythonbeginners

의문



주어진:

str1 = "/*Jon is @developer & musician"


예상 출력:

"Jon is developer musician"


내 시도


  • 힌트에서 translate() 및 maketrans()를 사용하라고 알려주므로 Google에서 사용하려고 합니다.
  • 첫 번째 시도는 테이블에서 특수 문자를 공백으로 바꾸는 것입니다.

  • str_1 = "/*Jon is @developer & musician"  
    x = "/*@&"  
    y = "    "  
    my_table = str_1.maketrans(x,y)  
    print(str_1.translate(my_table))
    


  • 출력 있음

  •   Jon is  developer   musician
    


  • 은 괜찮아 보이지만 그 사이에 너무 많은 공백이 있어 예상 결과
  • 와 같지 않습니다.

    translate() 및 maketrans() 메서드의 구문



    maketrans() 메서드는 translate() 메서드가 사용할 매핑 테이블을 반환합니다.

    translate() 메서드 구문




    str.translate(mapping table)
    


    maketrans() 구문




    string.maketrans(x, y, z)
    


  • x는 필수, y 및 z는 선택 사항입니다
  • 하나의 매개변수만

  • string.maketrans(dictionary)
    


  • 두 개의 매개변수 포함

  • string.maketrans(same length string, same length string)
    


  • 세 개의 매개변수

  • string.maketrans(same length string, same length string, another string)
    


  • 다른 문자열은 강도가 같지 않을 수 있습니다
  • .

    솔루션 추천



    해결 방법 1: translate() 및 maketrans() 메서드 사용




    import string
    
    str_1 = "/*Jon is @developer & musician"
    new_str = str_1.translate(str_1.maketrans('', '', string.punctuation))
    
    print(new_str)
    


  • 이 해결 방법은 maketrans 방법을 사용하고 string.punctuation을 세 번째 매개 변수로 사용하여 원래 문자열에서 모든 특수 헌장을 제거합니다
  • .
  • 구두점 방법을 사용하려면 문자열 모듈을 가져와야 합니다
  • .

    해결 방법 2: re.sub() 메서드 사용




    import re  
    
    str_1 = "/*Jon is @developer & musician"  
    
    # replace special symbols with ''  
    new_str = re.sub(r'[^\w\s]', '', str_1)  
    print(new_str)
    


  • 첫 번째 단계는 re 모듈을 가져오는 것입니다.
  • 둘째, re.sub 메서드를 사용하여 새 문자열을 구성합니다. 특수 문자를 str_1의 빈 문자열로 대체합니다.

  • r'[^\w\s]' 
    


  • 위의 식은 단어 문자나 공백이 아닌 모든 문자와 일치함을 의미합니다.
    --
  • "\w"는 유니코드 단어 문자와 일치함을 의미합니다. 여기에는 모든 언어에서 단어의 일부가 될 수 있는 대부분의 문자와 숫자 및 밑줄이 포함됩니다
  • .
  • "\s"는 유니코드 공백 문자와 일치합니다.
  • 접두사 r은 원시 문자열 표기법을 의미합니다. 이후 특수 캐릭터는 특수 기능을 발동하지 않고 일반 캐릭터로 취급한다.
  • [] 문자 집합을 나타내는 데 사용됩니다.
  • 세트^[]이고 첫 번째 문자인 경우 세트에 없는 모든 문자가 일치한다는 의미입니다
  • .

    내 반성



    그래서 maketrans()와 translate() 메서드는 물론 정규표현식도 배웁니다. re 모듈을 사용하면 코딩이 더 쉬워 보이지만 정규식 구문은 읽기에 그리 간단하지 않습니다.

    신용 거래


  • 운동 on Pynative (2022년 6월 7일에 액세스)
  • Python doc
  • 좋은 웹페이지 즐겨찾기