Python 참조/Python 책정리

Chapter4 문자열자료형

Snowboarder 2022. 5. 2. 01:14
  • 문자열은 이름, 주소, 아이디 등을 다룰 수 있는 자료형입니다. 문자열을 공부할 때는 우선 문자열을 만드는 문법을 꼼꼼하게 공부해야 합니다. 그리고 문자열에 적용할 수 있는 다양한 메소드를 익혀서 올바르게 사용 할 수 있도록 공부해 두세요.

1. 문자열 객체와 인덱스

  • 작은 따옴표나 큰따옴표를 이용해서 문자열 객체를 만듭니다.
  • 문자열에 있는 문자 수만큼 방을 만들어 줍니다.
  • 이 방 번호를 인덱스(index)라고 부릅니다.
  • 시퀀스 자료형: 인덱스를 붙여서 저장할 수 있는 자료형
  • 문자 한 개 또는 문자열 일부분에 접근하기 위해서 인덱스는 중요
  • 문자열 객체에서 하나의 문자를 가져다 사용하려면 대괄호 기호( [] )를 사용해야 합니다.
  • 인덱싱: []를 이용해서 문자열에 있는 문자 한 개에 접근하는 것

2. 문자열 만들기

빈 문자열 만드는 방법

  1. 빈 따옴표 사용하기
    • >>> s=''
  2. str() 함수 이용하기
    • >>> w= str()

따옴표 사용하기

  1. 출력된 문자열에 작은 따옴표가 나오게 하고 싶은 경우

모두 나오게 하려면 : 작은 따옴표 세개나 큰 따옴표 세개 하면된다

  • 특이사항으로 ' ' 안에는 "" 가능 하고 반대로 " " 안에는 '' 가능하다
  • Enter 키를 누르기 전에 ' 아직 문장이 끝나지 않았다' 는 신호를 주면 되는데
  • 이신호가 '\'(역슬래쉬)이다.
  • 큰 따옴표 세 개를 주석으로 사용할 떄는 특별히 'docstring'이라고 부른다.
  • docstring 참조 자료

파이썬(PYTHON) 클린코드 #1_ Docstring

이스케이프 시퀀스(escape sequence)

  • '\' 기호와 문자 한 개가 합해져서 특별한 의미를 갖는 문자를 말한다.
  • \ ' : 작은 따옴표를 그대로 사용함
  • \ " : 큰 따옴표를 그대로 사용함
  • \n : 줄바꿈 (엔터 효과)
  • \t : 문자 사이에 탭 간격을 줌
  • \\ : 문자 \ 를 그대로 사용함
  • 참조: 숫자가 실제로 컴퓨터에 저장된 형태가 정수인지 문자열인지를 알고 싶다면 IDLE에서 그냥 변수만 넣어보면 된다!.

3. 문자열은 immutable 객체입니다.

  • 문자열은 immutable 객체입니다.

4. 문자열 인덱싱(indexing), 슬라이싱(slicing)하기

인덱싱(Indexing)

  • 인덱싱은 인덱스를 이용하여 문자열의 특정 위치에 있는 문자에 접근하는 것을 말한다.
  • 인덱싱할때 조심해야 할 것은 인덱스의 범위를 지켜 주는 것이다.

슬라이싱(slicing)

  • 슬라이싱은 문자열의 일부분을 잘라보는 것이다.
  1. 클론이 하나 있는 형태
  2. 콜론이 두개 있는 형태
  • a, b 에는 인덱스가 와야 하고 c에는 간격을 나타내는 수를 넣어야 합니다.
  • [:b ] - [0:b]와 같습니다.
  • [a: ] - [a: len(alpha)] 와 같습니다.
  • [:] - 문자열 전체 (alpha[0: len(alpha)]와 같습니다.
  • [ : ] , [ : : ] 문자열 전체
  • [ : : -1] 거꾸로 된 문자열

5. 문자열에 +, *, in, not in , del 연산자 사용하기

  • 문자열과 문자열 사이에 +, * 기호 사용가능
  • in, not in , del 연산자는 다른 시퀀스 자료형인 리스트와 튜플에도 문자열과 똑같이 적용됌
  • + 연산 : 두 문자열을 연결하기
  •  *  연산 : 문자열을 반복하기
  • in 과 not in
    • 문자열이 포함되어 있는지를 판단
  • del 연산 : 문자를 삭제 할 수 없다.그러나 문자열을 통째로 삭제할 수는 있다.

6. 아스키코드와 ord()/chr() 함수

비트 : 0 또는 1 만 저장하는 공간 하나

바이트 : 비트 8개 모이면

아스키 코드(ASCII: American Standard Code for Information Interchange)

  • 미국에서 문자마다 숫자를 하나씩 붙여 놓았다.
  • 문자를 저장할 때 붙여 놓은 숫자를 이진수로 변환해서 저장해 주도록 했다.
  • 영어 인코딩 방식이다.
  • A - 65 a - 97 스페이스 -32 대문자와 소문자 사이 아스키 코드 차이: 32
    • 아스키 코드 값을 알아야 하는 경우
      • ord(x) : 반환 값은 x의 아스키 코드 값입니다.
      • chr(x) : 반환 값은 아스키코드 x에 해당하는 문자입니다.

7. 문자열에 함수 적용하기 - len(), max(), min(), sum(), sorted(), reversed()

  • len(S) : 문자열 S의 길이를 반환합니다.
  • max(S): 문자열 S의 문자들 중에서 ASCII 코드 값이 가장 큰 문자를 반환합니다.
  • min(S): 문자열 S의 문자들 중에서 ASCII 코드 값이 가장 작은 문자를 반환합니다.
  • sum(S): 문자열에는 sum 함수를 적용할 수 없습니다.
  • sorted(S) : ascii 코드 값으로 정렬하여 결과를 반환합니다. 결과는 리스트로 반환합니다.
  • reversed(S) : 문자열 S를 역순으로 바꾸어 줍니다.
    • 내림차순으로 정렬하고 싶으면 두 번 째 인수로'reverse= True'라고 넣어줌
    • 결과를 보려면 list()적용해서 볼 수 있다.

8. 문자열 메소드

  • 문자열 메소드 : 문자열에만 적용할 수 있는 함수들이다.
  • 문자열 메소드를 문자열 속성이라고 합니다.
  • 문자열 메소드는 ' 문자열에 해당 메소드를 적용해라' 라는 뜻입니다.

대소문자 변환하기 - capitalize(), title(), upper(), lower(), swapcase()

  • capitalize() : 첫 문자만을 대문자로 만든 새로운 문자열을 반환 나머지 문자들은 소문자
  • title() : 모든 단어의 첫 문자만을 대문자로 만든 새로운 문자열을 반환
  • upper()/lower() : upper()는 문자열을 모두 대문자로 바꾸고 lower()은 문자열을 모두 소문자로 바꿔 서 새 문자열을 반환
    • 참조: 문자열 자리에 직접 문자열을 넣어도 된다.
    • >>> y = 'good'.upper()
    • >>>y
    • 'GOOD'

정렬하기 - center(), ljust() , rjust()

  • center(): 문자열을 가운데로 정렬해 주는 메소드로 한 개 또는 두 개의 인수를 넣습니다.
    • 인수 1개:문자열.center(문자열 폭) 만약에 문자열 폭이 문자열 길이보다 작으면 무시
    • 인수 2개:문자열.center(문자열 폭, 빈 칸을 채울 문자)
  • ljust(): 문자를 왼쪽으로 정렬시키는 메소드 (center와 인수는 똑같음)
  • rjust(): 문자를 오른쪽으로 정렬시키는 메소드

특정 문자열 개수 세기 - count()

  • 문자열에서 x가 몇 번 나오는지를 찾아서 반환합니다.
    • 인수 1개: 문자열.count(x)
    • 인수 2개: 문자열.count(x,a) - 문자열 [a: ] 에서 문자열 x를 찾습니다.
    • 인수 3개: 문자열.count(x, a, b) - 문자열[a:b]에서 문자열 x를 찾습니다.
  • 문자열에서 x 가 몇 번 나오는지 그 횟수를 반환합니다.

특정 문자열의 인덱스 찾기 - index(). rindex(), find(), rfind()

  • index(x): 문자열에서 어떤 문자열 x가 있는 위치의 인덱스를 알려 주는 메소드
    • 인수 1개 : 문자열.index(x)
    • 인수 2개 : 문자열.index(x, a) 문자열 [a:]에 x가 있으면 x가 시작하는 인덱스를 반환합니다.
    • 인수 3개 : 문자열.index(x, a, b) 문자열[a:b]에 x가 있으면 x의 시작 인덱스를 반환합니다.
    • 문자열에서 x가 시작하는 위치의 인덱스를 반환 합니다. → x가 없으면 Value Error를 발생합니다.
  • rindex(x): x가 시작하는 위치를 오른쪽 끝에서부터 찾아 준다.(인수는 위와 같다)
  • find(x): 찾고자하는 문자열이 없다면 메소드는 -1을 반환합니다.
  • rfind(x) : 오른쪽에서 찾는다.

문자열의 시작과 끝 확인하기 - startswith(), endswith()

  • startswith(): 문자열이 특정 문자열 x로 시작하는 지를 판단하는 메소드
    • 인수 3개 까지 가능
  • endswith(x) : 문자열이 특정 x로 끝나는 지 확인하는 메소드
    • 인수 3개 까지 가능

출력 포맷 지정하기 - format(), format_map()

  • 문자열의 포맷을 맞춰 주는 메소드 입니다.
  • format(): format () 메소드를 적용하는 문자열에는 중괄호가 포함되어야 합니다.
    1. {} 가 포함된 문자열에 format() 메소드 적용하기
      1. x= ' I like { } and { } '
      2. x.form('apple' , 'strawberry')
      3. 'l like apple and strawberry'
    2. { 숫자 } 가 포함된 문자열에 format() 메소드 적용하기
      1. x = ' l like {0} with {1}. {0} is my favorite drink'
      2. x.format('coffee', 'milk')
      3. l like coffee with milk is my favorite drink
    3. { 변수 } 가 포함된 문자열에 format() 메소드를 적용하기
      1. x = '{name} is {age } years old'
      2. x.format(name='Alice, age= 10)
      3. 'Alice is 10 years old'
  • format_map(): 사전 형태로 선언할 수 있습니다.
  • v={'a': 10, 'b': 20, 'c': 30}
  • '{a}, {b}, {c}'.format_map(v)
  • '10, 20, 30'

 

문자열 결합하기/분리하기 - join() ,split(), rsplit(), splitlines()

  • join(): 여러 개의 문자열을 하나의 문자열로 합해서 반환하는 메소드
    • join 메소드의 인수로는 컨테이너 자료형(리스트,튜플,집합, 사전)을 모두 넣을 수 있습니다.
    • 참고: 컨테이너 자료형인 문자열, 리스트, 튜플, 집합, 사전이 모두 iterable 자료형이다.
  • split(): split() 메소드는 join() 메소드의 반대로 동작하는 메소드입니다.
    • 인수 x: 문자열.split() 스페이스로 문자열을 분리합니다.
    • 인수 1개: 문자열.split(구별자)
      • 구별자에도 문자열이 와야 하고, 구별자로 문자열을 분리합니다.
    • 인수 2개: 문자열.split(구별자.n)
      • 구별자에는 문자열, n번 분리합니다.
  • rsplit() : lsplit()은 그냥 split()이다
  • splitlines(): 라인을 분리하는 메소드입니다. 문자열을 '\n'을 기준으로 잘라 줍니다.

문자열에서 불필요한 문자 떼어내기 - strip(), rstrip(), lstrip()

  • 문자열 앞이나 뒤에 붙은 불필요한 문자들을 떼어 내야 합니다.
    • strip(): 인수가 없으면 양쪽에서 불필요한 문자를 떼어냅니다.
    • rstrip(): 오른쪽에서 불필요한 문자열를 떼어냅니다.
    • lstrip(): 왼쪽에서 불필요한 문자열을 떼어냅니다.
      • 인수 x: 문자열.strip()
        • 문자열 양쪽에 ' ', '\t', '\n', '\r'이 있다면 떼어냅니다.
      • 인수 1개: 문자열.strip(x)
        • 문자열 양쪽에서 x를 떼어 냅니다. (x도 문자열이어야 합니다.)
      • 반환 값: 특정 문자열을 떼어낸 나머지 문자열을 반환합니다.

문자열 분할하기- partition(), rpartition()

  • 인수 한 개를 반드시 넣어야 합니다. 인수를 기준으로 문자열을 세 부분으로 분할해서 튜플로 반환해 줍니다.
    • 튜플의 첫부분은 인수 전 부분이고 두 번째 부분은 인수 자체, 세 번째 부분은 인수 이후 부분

각각의 문자를 대체하기 - maketrans(), translate()

  • 특정 문자를 다른 문자로 대체하기 위한 메소드이다
    • maketrans(): 이 두 인수를 아스키코드로 변환하여 사전으로 반환합니다.
    • tanslate(): maketrans() 메소드의 결과로 나온 사전을 인수로 넣어야합니다
      • 사전의 ' 키' 에 해당하는 문자를 '값' 에 있는 문자로 대체 시켜 줍니다.

문자열 대체하기 - replace()

  • 문장에서 단어를 대체할 때 쓰인다.
    • 인수 2개: 문자열.replace(x,y) 문자열 x를 모두 문자열y로 대체합니다.
    • 인수 3개: 문자열.replace(x,y,n) 문자열 x n개를 문자열 y로 대체합니다.
    • 반환 값 : 대체한 결과 문자열을 반환합니다.

문자열에 0을 채우기 - zfill()

  • zfill()메소드는 문자열에 '0'을 채운 새로운 문자열을 반환하는 메소드입니다.

is로 시작하는 메소드 - istitle(), isalnum(), isalpha(), isdigit(), isidentifier(), islower(), isupper(), isspace()

  • istitle(): 문자열을 구성하는 단어들 가각이 모두 대문자로 시작하는지 판단합니다.
  • isalnum(): 문자열이 영문자 또는 숫자로만 구성된 경우
  • isalpha(): 문자열이 모두 알파벳인 경우
  • isdigit(): 문자열이 모두 숫자로 구성된 경우
  • isidentifier(): 문자열이 식별자로 사용할 수 있는지 판단
  • islower():문자열에 있는 영문자가 모두 소문자인지 판단
  • isupper(): 문자열에 있는 영문자가 모두 대문자인지 판단
  • isspace(): 문자열이 스페이스로만 구성되어있는지 판단

'Python 참조 > Python 책정리' 카테고리의 다른 글

Chapter 6 if 조건문 [중요]  (0) 2022.05.02
Chapter5 표준 입출력문  (0) 2022.05.02
Chapter3 수치자료형과 연산자  (0) 2022.05.02
Chapter2 객체, 변수 , 자료형  (0) 2022.05.02
Chapter1 파이썬 시작하기  (0) 2022.05.02