2023-07-26 22:17:06
728x90
728x90

자료형과 문자열

핵심 키워드 : 자료형, 문자열, 이스케이프 문자, 문자열 연산자, type(), len()

  • 문자열(string) : 개발자들이 쉽게 사용할 수 있도록 기능과 역할에 따라서 구분해 놓은 자료의 종류를 자료형(data type)이라고 부른다. 가장 기본적인 자료형으로는 문자열, 숫자, 이 있다.
문자열(string) 예시)"안녕하세요","Hello World"
숫자(number) 예시)52, 273, 103.32
불(boolean) True, False

       이러한 기본 자료형을 조합해서 새로운 자료형을 만들 수도 있다. 예를 들어 숫자를 세 개 조합 하면 '2020.12.9'처럼
       날짜를 표현하는 자료형이 만들어 진다.

 

  • 자료형(data type) : 자료형이란 자료의 형식을 말한다. 파이썬에서 자료의 형식을 확인할 때는 type() 함수를 사용한다. print() 함수와 마찬가지로 식별자 뒤에 괄호가 있으므로 함수이다. 함수의 괄호 내부에 자료를 넣으면 그 자료가 어떤 자료형을 가지고 있는지 확인할 수 있다.

    예제를 살펴보자.

>>>print(type("안녕하세요"))
<class 'str'>
>>>print(type(273))
<class 'int'>

       "안녕하세요"라는 문자열을 괄호 안에 넣으니 <class 'str'>이, 숫자를 괄호 안에 넣으니 <class 'int>가 출력된다.
       str이란 string을 짧게 표현한 것이고 문자열을 의미한다.그리고 <class 'int'>의 int는 integer를 짧게 표현한 것으로 정수
       를 나타낸다.

  • 문자열 만들기
    프로그래밍 언어에서는 글자들이 나열된 것을 문자열이라고 부른다. 문자열은 영어로 스트링(string)이라고 부른다.
    지금까지 따옴표("",'') 로 감싸 입력한 모든것을 문자열이라고 생각하면 된다.

    큰 따옴표로 문자열 만들기
>>>print("안녕하세요")
안녕하세요

      ※작은따옴표로 문자열 만들기

>>>print('안녕하세요')
안녕하세요

      ※문자열 내부에 따옴표 넣기
      앞에서 문자열을 만드는 두 가지 방법을 확인했다. 그런데 왜 두 가지 방법이나 지원하는지 어떠한 것을 사용해야하는
      지 예를 들어 확인해 보자.
      "안녕하세요"라고 말했습니다. 처럼 큰따옴표를 포함한 문자열을 만든다고 가정해보자.

>>>print(""안녕하세요"라고 말했습니다.")

     안녕하세요를 출력하기 위한 큰따옴표 한 개,"안녕하세요"라고 말했습니다."를 출력하기 위한 큰따옴표 한개 총 두개를       사용해서 만들것이다. 출력을 해보면 다음과 같은 오류가 발생한다.

SyntaxError: invalid syntax

    파이썬 프로그래밍 언어는 ""안녕하세요"라고 말했습니다."라는 문자열을 다음과 같이 인식한다.

    제일 앞 큰따옴표("")는 아무 글자도 없는 문자열을 의미하고, 안녕하세요 다음으로 사용 하는 큰따옴표("라고 말했습니      다.)"는 글자가 있는 문자열을 의미한다.

    파이썬 프로그래밍 언어는 자료(문자열)와 자료(문자열)을 단순하게 나열할 수 없다. 그래서 구문 오류(Syntax Error)가

    발생 하는 것이다.

    그러면 큰따옴표를 문자열 내부에 넣고 싶으면 어떻게 해야할까?

>>>print('"안녕하세요"라고 말했습니다.')
"안녕하세요"라고 말했습니다.

    매우 간단하다. 작은따옴표로 문자열을 만들면 된다. 반대로 문자열 내부에 작은 따옴표를 넣고 싶다면 마찬가지로 큰따
    옴표로 문자열을 만들면 된다.

    ※이스케이프 문자를 사용해 문자열 만들기
    큰 따옴표로 문자열을 만들든, 작은따옴표로 문자열을 만들든, 어떤 방법으로 문자열을 만들더라도 원하는 때에 큰따옴
    표와 작은따옴표를 쉽게 넣을수 있는 방법이 바로 이스케이프(escape character)문자 이다. 이스케이프 문자는 역슬래
    시(\) 기호와 함께 조합해서 사용하는 특수한 문자를 의미한다.

    이스케이프 문자의 종류를 알아보자.

# 역슬래시(\)를 조합해 문자열과 내부에 문자열을 입력하기
>>>print("\"안녕하세요\"라고 말했습니다.")
"안녕하세요"라고 말했습니다.
>>>print('\'안녕하세요\'라고 말했습니다')
'안녕하세요'라고 말했습니다.

# \n : 줄바꿈을 의미
>>>print("안녕하세요\n안녕하세요")
안녕하세요
안녕하세요

# \t : 탭을 의미
>>>print("안녕하세요\t안녕하세요")
안녕하세요	안녕하세요

# 역슬래시(\)출력
>>>print("\\ \\ \\ \\")
\ \ \ \

# """ : 여러줄 문자열을 의미
#Enter를 누르는 곳마다 줄바꿈이 일어난다.
>>>print("""동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세""")
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세

#의도하지 않은 줄바꿈이 들어가지 않게 할때는 \ 기호를 입력 해준다
>>>print("""\동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세\""")
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세
  • 문자열 연산자
    숫자에는 더하기, 빼기, 곱하기, 나누기 연산자를 적용할수 있다. 집합에는 합집합, 교집합, 차집합 등의 연산자를 적용할수있다. 이러한 연산자는 특정한 자료의 형태에 종속된다. '숫자'라는 자료에는 더하기, 빼기, 곱하기, 나누기 라는 연산자를 적용할 수 있지만, 합집합, 교집합, 차집합이라는 연산자는 적용할 수 없다는 것이다. 즉 각각의 자료는 사용할 수 있는 연산자가 정해져 있다. 프로그래밍 언어의 자료들도 마찬가지다. 숫자에는 숫자에만 적용할 수 있는 연산자가 있고, 문자열에는 문자열에만 적용할 수 있는 연산자가 있다.

    # 문자열 연결 연산자 : +
    문자열에는 + 연산자로 문자열 연결 연산을 적용할 수 있다.
    '숫자 더하기 연산자'와 '문자열 연결 연산자'는 모두 기호를 사용하지만, 내부적으로 완전히 다른 수행을 하는 연산자이다.
>>>print("안녕" + "하세요")
안녕하세요
>>>print("안녕하세요" + "!")
안녕하세요!

#문자열과 숫자 사이에 문자열 연결자를 사용하게 되면 TypeError 메시지가 나타난다.
>>>print("안녕하세요" + 1)
TypeError: can only concatenate str (not "int") to str


#숫자라 하더라도 문자열과 함께 연산하려면 큰따옴표를 붙여 문자열로 인식시켜야 한다.
>>>print("안녕하세요" + "1")
안녕하세요1

      ※ 문자열 반복 연산자 : *
      문자열을 숫자와 * 연산자로 연결하면 문자열을 반복할 수 있다.

>>>print("안녕하세요" * 3)
안녕하세요안녕하세요안녕하세요

# 숫자 * 문자열 과같이 순서를 바꿔서 입력해도 된다.
>>>print(3 * "안녕하세요")
안녕하세요안녕하세요안녕하세요

      ※ 문자 선택 연산자(인덱싱) : [ ]
      문자 선택 연산자는 문자열 내부의 문자 하나를 선택하는 연산자이다. 대괄호 [ ] 안에 선택할 문자의 위치를 지정하며, 
      이 숫자를 인덱스(index)라고 부른다.
      프로그래밍 언어는 인덱스 유형을 크게 두 가지로 구분해서 사용한다. 하나는 숫자를 0부터 세는 제로 인덱스, 다른 하
      나는 숫자를 1부터 세는 원 인덱스로 구분한다. 파이썬은 '제로 인덱스' 유형을 사용하는 언어이다. 즉 문자열의 위치를        셀 때 무조건 0부터 세어 다음과 같이 첫 번째 글자가 0번째, 두 번째 글자가 1번째, ~가 된다.

[0] [1] [2] [3] [4]

      직접 코드를 입력해서 확인해 보자.

print("안녕하세요"[0])
print("안녕하세요"[1])
print("안녕하세요"[2])
print("안녕하세요"[3])
print("안녕하세요"[4])
안
녕
하
세
요

      추가로 대괄호 안의 숫자를 음수로 입력하면 뒤에서부터 선택할 수 있다.

[-5] [-4] [-3] [-2] [-1]

      ※ 문자열 범위 선택 연산자(슬라이싱) : [ : ]
      문자열의 특정 범위를 선택할 때 사용하는 연산자이다. 범위는 대괄호 안에 위치를 콜론( : ) 으로 구분해서 지정한다.

>>>print("안녕하세요"[1:4])
녕하세

      그런데 이 또한 프로그래밍 언어에 따라 두 가지 유형이 있다. 하나는 범위 지정시 '마지막 숫자를 포함'이 있고, 다른 하
      나는 ' 마지막 숫자를 포함하지 않음'이 있다. 파이썬은 '마지막 숫자를 포함하지 않음'으로 적용한다. 그래서 위와 같은 
      코드를 입력하면 1번째+2번째+3번째 글자 까지만 추출되어 '녕하세'를 출력한다.


      또, 문자열 범위 선택 연산자는 대괄호 안에 넣는 숫자 둘 중 하나를 생략하여 다음과 같은 형태로도 사용한다.
      뒤의 값을 생략할 때는 자동으로 가장 최대 위치(마지막 글자)까지, 앞의 값을 생략할 때는 가장 앞쪽의 위치
      (첫 번째 글자)까지 지정한다.

>>>print("안녕하세요"[1:]
녕하세요
>>>print("안녕하세요"[:3]
안녕하
  • 문자열의 길이 구하기
    문자열의 길이를 구할 때는 len() 함수를 사용합니다. 이전에 언급했던 것처럼 식별자 뒤에 괄호가 있으면 해당 식별자를 함수라고 부른다. len()도 식별자 뒤에 괄호가 있으므로 함수이다.

    그리고 괄호 내부에 문자열을 넣으면 '문자열에 들어있는 문자의 개수(=문자열의 길이)'를 세어 준다. 아래 코드의 경우 "안녕하세요"라는 문자열은 다섯 글자이므로 5를 출력한다.
>>>print(len("안녕하세요"))
5

      

728x90

'Python' 카테고리의 다른 글

파이썬 불 자료형과 if 조건문  (0) 2023.07.28
파이썬 숫자와 문자열의 다양한 기능  (0) 2023.07.27
파이썬 변수와 입력  (0) 2023.07.27
파이썬 숫자  (0) 2023.07.27
파이썬 공부  (0) 2023.07.25