본문 바로가기
아이티/파이썬

너무 쉬운 파이썬 강좌 6) 파이썬 기초 강좌 자료형(String Part II)

by 베베슈슈 2023. 12. 1.

파이썬 기초강좌 메인 이미지

목차

    지난 시간에는 파이썬의 문자열에 대해서 소개하였다. 문자열(String)은 매우 중요한 자료형이라 한 시간에 다루기에는 양이 많아 한번 더 다루려고 한다. 지난 시간에 다뤘던 내용은 다음과 같다.

    • 문자열이 어떻게 구성된 자료형인지 : 캐릭터들로 이뤄진 배열
    • 파이썬 문자열에 연산자를 사용하면 어떻게 동작하는지 : +, * 연산자의 동작 방법
    • 그리고 인덱싱과 슬라이싱에 대해서 배웠다: [A:B]의 형태로 인덱스 A의 위치에서 B의 위치까지 표시

    문자열 연결

    연산자를 통해 연결하기

    파이썬에서 문자열은 + 연산자를 통해서 연결할 수 있다. 다만 이런 경우는 문자열끼리 연결할 때 쓰인다.

    str_name = "베베" + "슈슈"
    print(str_name)    #베베슈슈

     

    format을 이용하여 문자열 연결하기

    이번에는 format을 통해서 텍스트를 연결해보려고 한다. 앞 서 익힌 것과 같이 스트링은 캐릭터 타입의 자료형이 배열을 이룬 것이기 때문에 스트링을 연결하기 위해서는 모두 ""나 ''로 이루어진 캐릭터의 집합체라야 한다.

    str_name = "베베" + 10 + "살"
    print(str_name)
    
    str_name = "베베" + 10 + "살"
                   ~~~~~^~~~
    TypeError: can only concatenate str (not "int") to str

     

    이와 같은 코드를 입력해보면 

    베베(스트링) + 10(int) + "살"(스트링)으로 인해서 오류가 발생한다.

    "베베" + "10" + "살"로 변경해서 스트링끼리의 연결로 바꾸면 된다고 생각할 수 있을 것 같은데

    nAge = 10
    str_age = "베베" + nAge + "살"

     

    위와 같이 나이를 변수로 넘겨 받은 경우라면 이어 붙일 수 없게 된다.

    이렇게 여러가지 변수 타입을 스트링으로 이어 붙여야 할 일이 생기는데 이럴 때 format을 이용한다.

    nAge = 10
    str_age = "베베는 {}살 입니다."
    print(str_age.format(nAge))		#베베는 10살입니다.

     

    이렇게 스트링객체에 포함된 format 메서드를 이용해서 문자열과 정수형 자료를 이어 붙일 수 있다.

    nAge_bebe = 10
    fAge_shushu = 5.0
    
    str_age = "베베는 {}살 입니다. 그리고 슈슈는 {}살 입니다."
    print(str_age.format(nAge_bebe, fAge_shushu))
    #베베는 10살 입니다. 그리고 슈슈는 5.0살 입니다.

     

    float형 자료도 마찬가지로 이어 붙일 수 있고 자료가 둘 이상이라도 이어 붙일 수 있다.

    순서를 바꾸고 싶을 때는 format에 들어가는 변수의 순서를 {} 안에 지정해 주면 되는데

    nAge_bebe = 10
    fAge_shushu = 5.12345
    
    str_age = "베베는 {1:.3f}살 입니다. 그리고 슈슈는 {0}살 입니다."
    print(str_age.format(nAge_bebe, fAge_shushu))
    
    #베베는 5.123살 입니다. 그리고 슈슈는 10살 입니다.

     

    str_age.format( 0번째 값, 1번째 값)의 순서로 입력 되기 때문에

    str_ate를 선언할 때 {} 안에 넣은 값의 순서대로 format을 만들 수 있다.

    위의 예제를 다시한번 살펴보면 str_age의 첫 번째 값에 1:.3f 라고 써진 것을 볼 수 있을 텐데

    :.3f처럼 형식지정자를 사용하면 소수점 세 자리로 표시하겠다는 의미이다.

    f-string 사용하기

    이번에는 f-string이라는 것을 이용해서 문자열을 이어보자. 스트링 객체의 format 메서드를 사용하는 것과 결과는 같은데

    사용방법이 더 명시적이고 객체를 생성하지 않아도 사용할 수 있다는 장점이 있다.

    str_name = "베베"
    nAge = 10
    
    #format 사용
    str_format = "{}의 나이는 {}살 입니다."				#format 스트링을 만든다.
    str_print = str_format.format(str_name, nAge)	   #format()에 의해 생성 된 객체를 str_print에 할당
    print(str_print)
    
    #f-string 사용
    str_print2 = f"{str_name}의 나이는 {nAge}살 입니다." #f-string에 의해 생성 된 객체를 str_print2에 할당
    print(str_print2)

     

    format과 f-string의 차이를 보여주기 위해 두 가지를 같이 써보았다. format 메서드를 사용하기 위해서는 일단 format을 지정한 스트링 객체를 만들어야 한다. 그리고 format을 가진 객체에서 format 메서드를 이용하여 생성된 객체를 다시 다른 변수에 할당하여서 사용해야 하기 때문에 코드가 번거로워지게 된다.

     

    f-string의 경우는 따로 객체를 생성하지 않아도 되며 사용 시 명시적으로 변수의 위치를 지정할 수 있기 때문에 쓰기에 더 편하다고 할 수 있다.

     

    다음 시간에는 문자열에 자주 사용되는 함수를 소개해보고자 한다.