[Python] 문자열(string) 다루기

반응형
    반응형

    알면 편하지만 모르면 코드 진행이 안되는 문자열에 대해 살펴보고자 합니다.

    문자열은 복수개의 문자를 순서대로 나열한 것인데 여기서 순서가 있다는 것이 중요합니다.

    아무 생각없이 문자를 나열해도 python 에서는 하나의 순열로 생각한다는 것입니다. 그런 인식 차이로 저희가 개발을 하면서 편한 부분이 많습니다.

    어떤 부분이 편한지 문자열을 직접 보면서 느끼셨으면 좋겠습니다.

     

    문자열 쓰기

    문자열을 쓰려면 

    '' 또는 "" 사이에 문자를 넣으면 됩니다. 숫자도 마찬가지로 저 따옴표 사이에 가면 문자열로 인식하게 됩니다.

    이미 따옴표 안에 들어간다면 뭐든 문자열로 인식합니다. "" 조차도 가능합니다. 

     

    '

    위의 예에서 a 같은 경우 작은 따옴표 안에 큰 따옴표를 넣어서 출력을 했더니 큰 따옴표가 그대로 나왔습니다. b에서는 반대로 해봐도 역시 나옵니다. c 같은 경우는 한줄을 띄어봤지만 줄바꿈은 출력이 안 되는 것을 볼 수 있습니다.

    그러면 줄바꿈도 가능하게 하려면 어떻게 해야할까요?

    바로 작은 따옴표나 큰따옴표를 앞뒤로 세개씩 작성하면 됩니다.

    보시는 것과 같이 c에서의 줄바꿈이 그대로 출력되는 것을 볼 수 있습니다. 

     

     

     

    인덱스(index)

    문자열에서 가장 중요한 것은 바로 순서가 있는것입니다. 문자열 내의 문자는 모두 번호를 가지고 있습니다. 따라서,

    'Hello world' 를 문자열로 쓰면 맨 처음 H 가 0번째 인덱스, e 가 1번째 인덱스 쭉 해서 마지막에 d는 10번째 인덱스가 됩니다.  처음 시작번호가 0번에서 시작합니다. 그 이유는 컴퓨터 메모리가 0번째에서 시작하니까 0번째 프레임에 넣어 메모리 절약을 하려고 한게 아닌가 싶습니다. 

    더하여, 인덱스를 거꾸로 할수도 있습니다. 음수 인덱스를 써서 할 수 있는데요. 

    'Hello world' 에서 d의 인덱스는 -1, l은 -2... ,H는 -10 이런식으로 할 수 있습니다.

    문자 끝의 인덱스를 모를 때 -1 로 찾아낼 수 있어서 굉장히 편합니다.

     

    짧은 문자는 인덱스를 눈으로 보고 알아낼 수 있지만 긴 문자인 경우는 쉽지가 않습니다. python 에는 str.find() 함수로 해당 문자가 몇번째 인덱스인지 알아낼 수 있습니다. 문자열의 길이를 알고싶다면, len() 함수를 쓰면 됩니다.

    a= 'Hello world'
    a.find(H)
    len(a)

     Hello world 로 예를 들겠습니다. a 변수로 대입하고 a.find(H) 를 하면 인덱스 번호가 나옵니다.

    결과는 0 이 나올것입니다.

    문자열의 길이는 11 이 나옵니다.

     

     

    문자열 slicing

     

    인덱스를 이용해 문자열을 잘라낼 수 있습니다. 주의할점은 문자열을 진짜 자르는게 아니고 기존의 있는 문자열에서 우리에게 일부분만 보여준다는 의미로 받아들어야 합니다. 이걸 무시하고 코딩을 하면 알고리즘이 꼬여버릴수도 있습니다. 사용법은 간단합니다. str[start : end : increment] 으로 많이 써 있는데 start 는 시작인덱스, end는 끝인덱스, increment 는 인덱스 증가폭입니다. 그러니깐 start에 어느 인덱스부터 시작할지를 숫자를 넣고 end 에 언제 끝낼지, increment엔 얼마씩 증가시킬지를 넣으면 실행됩니다.

    a = 'Hello world'
    1. a[1:10]
    2. a[:10]
    3. a[2:]
    4. a[2:7:2]

    4번 같은 경우는 2번 인덱스부터 시작해 7번까지 하되 2개씩 증가해서 잘라서 보여달라는 요청입니다.

    결과를 보면 low 만 나옵니다. 2번째 l, 4번째 o, 6번째 w (띄어쓰기도 인덱스가 있습니다.)

    로 되는 것을 볼 수 있습니다.

     

    문자열 함수

    마지막으로 주로 많이 쓰는 문자열 함수를 알아보도록 하겠습니다.

    가장 많이 쓰는 건 format 이라는 함수인데 정말 많이 편합니다. 문자열의 빈칸을 {} 으로 해주면 format 함수로 {} 를 채워줄 수 있습니다. 자동화하거나 크롤링할 때 많이 쓰게 되지 잘 숙지하시기 바랍니다.

    1. a = '오늘 수업의 출석한 학생은 {}명이고, 결석한 학생은 {}명이다'.format(2,3)
    2. attend = 2
       absent =3
       b = '오늘 수업의 출석한 학생은 {}명이고, 결석한 학생은 {}명이다'.format(attend,absent)

    방법은 두가지 입니다. 1번처럼 숫자나 문자를 직접 넣어도 되고, 2번처럼 대입을 통해 해도 됩니다.

    2번 방법이 반복을 할때는 더 유용하게 쓸수 있습니다. 

     

    같은 결과가 나오는 것을 볼 수 있습니다.

     

    replace 함수는 문자열의 문자를 바꿔줍니다. 한번 예를 보겠습니다.

    a ='Hello world'
    b= a.replace('H','K')
    print(a)
    print(b)

    replace 함수를 써서 H를 K로 바꿀려고 합니다. 비교를 위해 b로 변수선언을 하겠습니다.

    문자가 바뀌는 것을 알 수 있습니다.

     

     

    upper 함수는 소문자를 대문자로 바꿔줍니다.

    a= 'hello world'
    a.upper()

    너무 간단해서 그대로 한번 해보시면 무엇인지 알 수 있을겁니다.

     

    split 함수는 문자를 쪼개서 리스트로 반환합니다. 리스트는 다음에 자세히 다루겠습니다.

    a = 'hello world'
    a.split('w')

    가로안에 있는 문자를 기준으로 쪼개겠다는 얘기입니다. 

    보시는 것처럼 w 은 없어지고 w의 전과 후로 나뉘어지는 것을 볼 수 있습니다.

    'Python > 기초' 카테고리의 다른 글

    [Python] 딕셔너리(dictionary)  (0) 2020.03.28
    [Python] 리스트 다루기(생성,추가,인덱싱)  (0) 2020.03.25
    [python] 변수 이해  (0) 2020.03.23
    Jupyter notebook 사용법  (0) 2020.03.22
    [기초] Python 기본 데이터 타입  (0) 2020.03.20

    댓글

    Designed by JB FACTORY

    ....