본문 바로가기
코딩 테스트&알고리즘/알아야 할 것들

[파이썬 python] 파이썬 코딩테스트를 위한 문자열 문법 정리

by 창현2 2021. 8. 8.

추 후 수정 가능!

 

1) 목적 : 문자열 변수 이름 붙이기

- 일반적으로 파이썬에서는 snake case를 사용한다(고 한다..)

- 예) snake_case = "snake case"

- 특수문자는 _ 만 사용한다.

- 변수 이름 맨 앞에 숫자가 나와서는 안된다.

- 문자열 변수 이름 붙일 때 str 은 피하자. str은 파이썬에서 string 데이터 타입을 의미한다.

 

 

2) 목적 : 문자열 일부 추출하기

- 파이썬의 훌륭한 기능인 슬라이싱을 사용한다.

- 예) snake_case = "snake case"
- 예) print(snake_case[0:5])   => "snake"

- [시작하는인덱스(포함) : 끝나는인덱스(포함X)] 이다. 때문에 위에서 idx 5번째인 공백은 포함되지 않았다.

- 추출 할 때 문자 간격을 다르게 할 수도 있다.

- 예) print(snake_case[::2])    => "saecs"

- : 이 한 개 있을 때는 앞 선 예시처럼 동작하고, :: 이 있을 떄는 다르다.

- [시작하는인덱스(포함) : 끝나는인덱스(포함X): 문자이동하기] 이다. 1(생략) 이었을 떄는 추출하는 문자를 1씩 이동했지만, 문자이동하기를 2로 했을 경우는 추출하는 문자를 2씩 이동하였다.

- 슬라이싱 할 때 : 앞과 뒤는 생략 가능하다. 생략 했을 경우, : 앞은 맨처음, : 뒤는 끝까지 라는 의미이다.

- 예) print(snake_case[0:])   => "snake case"

- 예) print(snake_case[:5])   => "snake"

- 예) print(snake_case[:])   => "snake case"

- 문자열을 거꾸로 추출 할 수도 있다. [::-1] 사용.

- 예) print(snake_case[::-1])   => "esac ekans"

 

 

3) 목적: 문자열 -> 리스트,  리스트 -> 문자열

- 문자열 -> 리스트로 변경 하고 싶을 때,  문자열.split(쪼갤 기준) 을 사용한다. 아무것도 하지 않을 경우, '공백' 기준으로 나눈다.

- 예) print(snake_case.split())    => ['snake', 'case']

- 예) print(snake_case.split("a"))    => ['sn', 'ke c', 'se']

- 문자열 -> 리스트에서 list(문자열) 을 사용할 수도 있다. 이럴 경우 문자 하나하나씩 리스트에 추가된다.

- 예) print(list(snake_case))    => ['s', 'n', 'a', 'k', 'e', ' ', 'c', 'a', 's', 'e']

- 리스트 -> 문자열로 변경 하고 싶을 때, "붙일 떄 사이사이에 넣을 문자".join(리스트) 를 사용한다.

- 예) snake_case_list = ["snake","case"]

- 예) print(" ".join(snake_case_list))   => "snake case"

- 예) print("".join(snake_case_list))   => "snakecase"

 

4) 목적: 문자열이 영어인지, 숫자인지 확인하기

- 영어인지 확인할 땐 문자열.isalpha(),  숫자인지 확인할 땐 문자열.isdigit()

- 예) ab12 = "ab12"
- 예) print(ab12[0].isalpha())   => True

- 예) print(ab12[0].isdigit())   => False
- 예) print(ab12[2].isdigit())   => True
- 예) print(ab12[2].isalpha())   => False

 

5) 목적: 문자열이 소문자인지, 대문자인지 확인하기

- 소문자인지 확인할 떈 문자열.islower(), 대문자인지 확인할 땐 문자열.isupper()

- 예) ab12 = "Ab12"

- 예) print(ab12[0].islower())     => False
- 예) print(ab12[0].isupper())     => True

- 소문자로 변경 할 때는 문자열.lower(), 대문자로 변경할 때는 문자열.upper()

- 예) ab12 = "Ab12"

- 예) ab12[0].lower()     => ab12 = "ab12"

- 예) ab12[1].upper()     => ab12 = "aB12"

 

 

6) 목적: 문자열 내에서 특정 문자 찾기

- find() 를 쓴다. 찾으면 (시작하는)해당 위치를, 찾지 못하면 -1을 반환한다.

- 예) ab12 = "Ab12"

- 예) print(ab12.find("A"))    =>  0

- 예) print(ab12.find("Ab1"))  => 0

- 예) print(ab12.find("철수"))    =>  -1

 

 

7. 목적: 문자열 내에서 특정한 문자 제거하기

- 문자열.replace(바뀔문자, 바꿀문자)를 쓴다.

- 예) ab12 = "Ab12"

- 예) print(ab12.replace("Ab","철수"))  => "철수12"

- re.sub 정규식을 사용한다. re.sub(바꿀문자규칙, 이렇게바꾼다, 문자열)   import re 를 해줘야한다!

- 예) ab12 = "A-b-1-2!!!_허허"

- 예) ab12 = re.sub('[^a-zA-Z0-9]','',ab12)

- 예) 위의 [ ] 안에서 규칙이 생긴다. ^는 '이것들 빼고', a-z 는 a에서 z까지, A-Z는 A에서Z까지, 0-9는 0에서 9까지 라는 뜻. 총합하면 a에서z까지랑 A에서Z까지랑 0에서9까지랑 제외하고는 죄다 바꿀꺼다! 라는 뜻.

- 예) print(ab12)   => "Ab12"

댓글