티스토리 뷰

728x90

파이썬 기본 자료형 : 문자형

우리가 실생활에서 가장 중요하고 가장 많이 사용하는 것은 말입니다. 지금 이렇게 블로그에 글을 쓰고 있는 것 자체도 우리의 말을 옮기는 과정이죠. 개발에 거의 모든 것에 텍스트가 포함되어 있습니다. 오늘은 이렇게 중요한 텍스트 즉 문자형에 대해 알아보기로 합시다. 😀




1. 문자형 이란?


우리가 생각하는 문자형이란? 한 글자에서부터 긴 문장, 문단, 한 편의 글에 이르기 까지 다양합니다.


"ㅏ"

"안녕"

"python is beautiful language"

"""Python is an interpreted, high-level, general-purpose programming language. 
Created by Guido van Rossum and first released in 1991, 
Python's design philosophy emphasizes code readability with its notable use of
significant whitespace. Its language constructs and object-oriented approach 
aim to help programmers write clear, logical code for small and large-scale projects"""

이를 문자열(string)이라고 하는데 문자들의 집합을 의미합니다.


1-1 문자열을 만드는 방법


문자열을 만들기 위해서는 큰따옴표 "와 작은따옴표'를 사용합니다.


큰따옴표 하나로 문자열 만들기


a = "python is beautiful language"

print(a)
> python is beautiful language

큰따옴표 3개로 문자열 만들기 (멀티라인)


a = """python is beautiful language"""

print(a)
> python is beautiful language

b = """python is
beautiful language
try!"""

print(b)
> python is
beautiful language
try!

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


a = 'python is beautiful language'

print(a)
> python is beautiful language

작은따옴표 3개로 문자열 만들기 (멀티라인)


a = '''python is beautiful language'''

print(a)
> python is beautiful language

b = '''python is
beautiful language
try!'''

print(b)
> python is
beautiful language
try!

만약 문자열에 큰따옴표나 작은따옴표를 포함하고 싶을 때가 있다면?


큰따옴표가 포함된 문자열 만들기


a = '"python is beautiful language"' # or '''"python is beautiful language"''' 

print(a)
> "python is beautiful language"

작은따옴표가 포함된 문자열 만들기


a = "'python' is beautiful language" # or """'python' is beautiful language""" 

print(a)
> 'python' is beautiful language

백슬래시( \ )를 사용하여 ", ' 문자열 표현하기


원하는 문자열을 잘 표현하기 위해서는 백슬래시\ 를 사용해야할 경우가 많이 발생합니다.
\", \' 로 사용합니다.


a = "우리의 \'우상\'"

print(a)
> 우리의 '우상'

즉, 포함하고 싶은 따옴표와 다른 따옴표로 문자열을 감싸주시면 됩니다 😙


따옴표 사용 시 오류 및 주의점


주의 😡

1) 다른 따옴표로 문자열을 감싼 경우


a = "python is wonderful language'

>  File "", line 1
    a = "python is wonderful language'
                                      ^
SyntaxError: EOL while scanning string literal

2) 문자열에 포함된 따옴표와 같은 따옴표를 사용한 경우


a = ''python' is wonderful language'
>  File "", line 1
    a = 'python' is wonderful language'
                                     ^
SyntaxError: invalid syntax

  • ", ' 을 혼용해서 사용하지 않게 합니다.

3) 콤마의 차이


"안녕""하세요😀"
> '안녕하세요😀'

"안녕","하세요😍"
> ('안녕', '하세요😍')



2. 이스케이프 문자


이스케이프 문자란 프로그래밍을 할 때 원하는 출력물을 표현할 수 있도록 미리 정의해 둔 문자조합이다.



출처 : https://wikidocs.net/16034



코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\ 문자 \를 그대로 표현할 때 사용
' 작은따옴표(')를 그대로 표현할 때 사용
" 큰따옴표(")를 그대로 표현할 때 사용
\r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
\f 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동)
\a 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다)
\b 백 스페이스
\000 널 문자

출처 : https://wikidocs.net/13


  • 이를 활용하여 원하고자 하는 문자열을 표현할 수 있으며, 나중에 웹 크롤러를 만들때에도 웹에서 원하는 텍스트정보를 잘 가져올 수 있습니다.



3. 문자열 연산하기


문자열로도 연산이 가능합니다. 지금부터 알아보도록 합시다 😎


1) 문자열 더하기


a = "PYTHON "
b = "IS "
c = "AWESOME"

a + b + c
> 'PYTHON IS AWESOME' # 3 문자열을 합쳐서 문자열로 만들어 줍니다.

print(a + b + c) # print 즉 출력한다는 말입니다. 만들어진 값을 출력해줍니다.
> PYTHON IS AWESOME

여기서 주의할 점은 print 함수는 출력하는 함수로 문자열을 만들 때 사용하는 따옴표들은 컴퓨터가 문자열임을 인식하기 위해서 감싸준 의미이기 때문에 출력할 때에는 빠집니다.


2) 문자열 곱하기


a = "PYTHON "
a * 3
> 'PYTHON PYTHON PYTHON '

print(a * 3)
> PYTHON PYTHON PYTHON 

3) 문자열 길이 구하기


a = "you're not alone."

len(a)
> 17

4) 문자열 인덱싱 및 슬라이싱


배열을 배울 때처럼 인덱싱과 슬라이싱을 배워봅시다.

기본 틀 : a[start:end:interval]

인덱싱 이란 문자열을 0부터 순서를 자리를 매겨준 것이라고 생각하면 됩니다.


a = 'abcde fghij'
    #012345678910

a[0]
> 'a'
a[10]
> 'j'
a[-1]
> 'j'

a부터 0으로 시작하여 j까지 10으로 이루어집니다. 즉 11길이의 문자열입니다. 그리고 마지막 문자열을 가리킬 땐 -1 인덱스를 사용합니다. 당연히 -2 도 사용됩니다. 뒤에서 부터 숫자를 센다고 보시면 됩니다.

이제 슬라이싱이란 시작점 인덱스에서 끝점 인덱스까지 문자열을 가지고 올 때 사용합니다.


a = "python is beautiful language"
b = a[0] + a[1] + a[2] + a[3] + a[4] + a[5]
c = a[8:10]
first = a[:10]
second = a[10:] 

a[0:6]
> 'python'
b
> 'python
c
> 'is'

first
> 'python is'
second
> 'beautiful language'
first + second
> 'python is beautiful language'
주의 😡
  • 슬라이싱할 때 마지막 인덱스는 포함되지 않습니다. 즉 a[0:6]a[5] 까지 문자열을 가지고 옵니다.
  • 인덱스가 안맞으면 오류가 발생하므로 인덱스 길이를 잘 계산해서 써야합니다. 😁



4. 문자열 포매팅


문자열을 더욱 편리하게 대입하고 표현하기 위해서 문자열 포매팅을 배워봅시다.


원하는 곳에 대입하기


"i lived in korea for %d years" % 3
> 'i lived in korea for 3 years'

"i lived in %s for 3 years" % "korea"
> 'i lived in korea for 3 years'

nation = "the United States"
years = 3
"i lived in %s for %d years" % (nation, years)
>'i lived in the United States for 3 years'

이렇게 원하는 곳에 원하는 데이터를 넣을 수 있습니다. %d%s 를 처음 보셨을텐데 이를 알아봅시다.


문자열 포멧코드


코드 설명
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)

a = "이스케이프 문자 \n 개행 \\ 쌍따옴표를 쓰기 \"\" "

print(a)
>이스케이프 문자 
라인이 바뀜 \ 쌍따옴표를 또 쓰기 "" 

'Vi er s\u00e5 glad for \u00e5 h\u00f8re og l\u00e6re om Python!'
> 'Vi er så glad for å høre og lære om Python!'

a = r"이스케이프 문자 \n 라인이 바뀜 \\ 쌍따옴표를 또 쓰기 \"\" " # 문자열 앞에 r을 붙이면 문자열 그대로 표현해줍니다.
print(a)
> 이스케이프 문자 \n 라인이 바뀜 \\ 쌍따옴표를 또 쓰기 \"\" 

위에서 사용한 포멧코드처럼 원하는 종류의 문자열을 원하는 장소에 넣으면 됩니다. 만약에 %d% 를 같이 사용할 때에는


"안녕하세요 %s%" % 100
ValueError Traceback (most recent call last)
 in 
----> 1 "안녕하세요 %s%" % 100
ValueError: incomplete format

하지만 %% 를 사용하면 % 를 표현할 수 있습니다.

"안녕하세요 %s%%" % 100
> '안녕하세요 100%'

포멧 코드와 문자열을 더 잘 표현하기


1) 정렬 및 공백

숫자를 사용하여 공백을 표시할 수 있으며, 양수(오른쪽 정렬), 음수(왼쪽 정렬)로 정렬을 나타낼 수 있습니다.
주의할 점은 숫자보다 나타내고 싶은 문자열의 길이가 길 경우 문자열이 그대로 나오게 되며 숫자가 더 큰 경우에는 숫자에 맞게 공백이 표현됩니다.


"%10s" % "안녕"
>'        안녕'

a = "%-10s" % "안녕"
a
>'안녕        '

len(a)
> 10

"%3s" % "안녕하세요"
>'안녕하세요' 

"%10s" % "안녕하세요"
>'     안녕하세요' # 10 길이

2) 소수점 표현하기


. 뒤에 숫자가 소수점 몇 자리까지 표현할 것인가를 나타낸 것입니다. 그 숫자를 기준으로 반올림하기 때문에 이를 주의합니다.

"%0.4f" % 3.141584
>'3.1416'

format함수와 f-string기능


1) format()


% 와 비슷한 기능을 수행하는 format함수를 알아봅시다.🤣


"안녕하세요 저는 %s입니다." % "홍길동"
>'안녕하세요 저는 홍길동입니다.'

"오늘은 {0}일 입니다. 오늘의 날씨는 {1} 입니다.".format(3,"맑음") # 직접 값 대입
>'오늘은 3일 입니다. 오늘의 날씨는 맑음 입니다.'

page = 4
"지금 {}페이지입니다.".format(page) # 변수 사용
>'지금 4페이지입니다.'

name = 홍길동
"오늘 발표자인 {}입니다. ppt {} 페이지를 봐주세요.".format(name, 10) # 변수와 직접 값 혼용
>'오늘 발표자인 홍길동입니다. ppt 10 페이지를 봐주세요.'

"{0:>10}".format("안녕") # 오른쪽 정렬
>'        안녕'

"{0:<10}".format("안녕") # 왼쪽 정렬
>'안녕        '

"{0:^10}".format("안녕") # 가운데 정렬
>'    안녕    '

"{0:+^10}".format("안녕") # 공백 채우기
>'++++안녕++++'

"{{ 안녕 }}".format()
>'{ 안녕 }'

2) f-string


python 3.6버전부터 이 기능을 사용할 수 있습니다.
format보다 좀 더 성능이 뛰어납니다.


import math
name = "홍길동"
age = 28
f'이번에 들어온 신입의 이름은 {name}입니다. 나이는 {age}입니다.'
>'이번에 들어온 신입의 이름은 홍길동입니다. 나이는 28입니다.'

f'너가 올해 28살인가? 아니야 {age - 1}이구나'
>'너가 올해 28살인가? 아니야 27이구나'

f'{"안녕":>10}' # 10글자 오른쪽 정렬
>'        안녕'

f'{"안녕":<10}' # 10글자 왼쪽 정렬
>'안녕        '

f'{"안녕":=^10}' # 10글자 가운데 정렬 공백 = 채움
>'====안녕====' 

f'{{안녕}}'
>'{안녕}'

f'수학에서 파이 = {m.pi:.5f}'
>'수학에서 파이 = 3.14159'

  • 변수를 사용하기 때문에 {} 안에서 연산도 가능합니다.
  • 대량의 데이터도 넣기 편합니다. 딕셔너리에서 key와 value를 사용할 수 있습니다.

F-STRING을 사용하면 유용할 때가 많습니다!! 유용하게 적용합시다. 🤗




5. 문자열과 관련된 함수들


문자 자료형은 편리한 내장함수들을 가지고 있습니다. help(str) 을 통해 문자열과 관련된 함수들을 볼 수 있습니다. 그 중 기본적이면서 유용한 함수를 알아보아요. 😀😀


문자 개수 세기 ( count() )


count() 함수는 원하는 문자가 해당 문자열에 몇 개 있는지 알려주는 함수입니다.


a = "apple"
a.count('p')
> 2

문자 인덱스 알려주기 1 ( find() )


find() 함수는 원하는 문자가 해당 문자열에 어느 위치에 있는지 알려줍니다.
주의할 점은 앞에서부터 가장 빨리 찾아진 인덱스를 알려줍니다. 또 없는 문자를 넣으면 -1 를 반환합니다.


a = "apple"
a.find('p')
> 1

a.find("h")
> -1

문자 인덱스 알려주기 2 ( index() )


index()함수는 find()와 동일하게 원하는 문자의 위치를 알려주지만 다른 점은 없는 문자를 넣었을 때 오류를 반환합니다. 주의합시다🥵


a = "apple"
a.index("e")
> 4

a.index("h")

ValueError Traceback (most recent call last)
 in 
      2 a.find('p')
      3 
----> 4 a.index("h")

ValueError: substring not found

문자열 구분, 삽입 ( join() )


join() 함수는 정말 유용한 함수이기 때문에 알아두시면 좋습니다.
이 함수는 문자열뿐만 아니라 리스트나 튜플도 합칠 수 있습니다.


"-".join("abcd") # 문자열 사이에 -를 넣습니다.
>'a-b-c-d'

"-".join(['a','b','c','d'])
>'a-b-c-d'

대문자, 소문자 바꾸기 ( upper(), lower() )


소문자를 대문자로 바꾸는 함수입니다. 대문자를 대문자로 바꾼다면 실행은 되나 아무 효과가 없습니다.

a = "python"
a.upper()
>'PYTHON'

a = "PYTHON"
a.lower()
>'python'

공백 없애기 ( lstrip(), rstrip(), strip() )


a = "       안녕         "
a.lstrip()
>'안녕         '

a = "       안녕         "
a.rstrip()
>'       안녕'

a = "       안녕         "
a.strip()
>'안녕'

문자 바꾸기 ( replace() )


원하지 않는 문자를 다른 문자로 대체할 수 있습니다.


a = "python is beautiful"
a.replace("beautiful","wonderful")
>'python is wonderful'

문자열 나누기 ( split())


split() 함수의 기본 값은 공백으로, 그 기준을 가지고 문자열을 나눠줍니다.


a = "python is wonderful"
a.split()
>["python","is","wonderful"]

b = "a-b-c-d-e"
b.split("-")
>['a','b','c','d','e']

문자열 변환


a = 100 # int
a_str = str(100)
a_str
> '100'



문자열은 특히 개발이나 데이터를 활용할 때 정말 정말 정말 중요하기 때문에 모두 알아두시면 좋습니다. 나중에 정규표현식이란 것을 배울텐데 그것도 아주 중요한 모듈이기 때문에 공부합시다! 🤩🤩🤩
긴 글 읽어주셔서 감사합니다.


참고 :


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함