Program/Python

Python 자료형 : 문자형

하랑파파♡ 2020. 9. 6. 15:53
728x90
반응형
SMALL

문자열이란?

문자, 단어 등으로 구성된 문자들의 집합을 의미

따옴표로 둘러싸여 있으면 모두 문자열

"Life is too short, You need Python"
"a"
"123"

문자열을 만드는 방법은 4가지

1. 큰따옴표(")로 양쪽 둘러싸기
"Hello World"

2. 작은따옴표(')로 양쪽 둘러싸기
'Python is fun'

3. 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기
"""Life is too short, You need python"""

4. 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기
'''Life is too short, You need python'''

백슬래시()를 사용해서 작은따옴표(')와 큰따옴표(")를 문자열에 포함시키기

>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."

작은따옴표(')나 큰따옴표(")를 문자열에 포함시키는 또 다른 방법은 백슬래시()를 사용하는 것

백슬래시()를 작은따옴표(')나 큰따옴표(") 앞에 삽입하면 백슬래시() 뒤의 작은따옴표(')나 큰따옴표(")는 문자열을 둘러싸는 기호의 의미가 아니라 문자 ('), (") 그 자체를 뜻하게 된다.

여러 줄인 문자열

>>> multiline='''
... Life is too short
... You need python
... '''

>>> multiline="""
... Life is too short
... You need python
... """

>>> print(multiline)
Life is too short
You need python

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

문자열 연산하기

문자열 더해서 연결하기(Concatenation)

>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'

문자열 곱하기

>>> a = "python"
>>> a * 2
'pythonpython'

문자열 곱하기 응용

# multistring.py

print("=" * 50)
print("My Program")
print("=" * 50)

문자열 길이 구하기

>>> a = "Life is too short"
>>> len(a)
17

문자열 인덱싱과 슬라이싱

문자열 인덱싱

>>> a = "Life is too short, You need Python"
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]
'n'

문자열을 하나하나 나누는 것

인덱싱은 0부터 시작 ⇒ a[0] : L, a[1] : i, a[2] : f...

인덱싱이 음수 '-' 일 경우에는 뒤에서부터 ⇒ a[-1]:n, a[-2]:o...

문자열 슬라이싱

>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'

a[0:4]가 뜻하는 것은 a 문자열, 즉 "Life is too short, You need Python" 문장에서 자리 번호 0부터 4까지의 문자를 뽑아낸다는 뜻

슬라이싱 기법으로 a[시작 번호:끝 번호]를 지정할 때 끝 번호에 해당하는 것은 포함하지 않기 때문

>>> a[0:2]
'Li'
>>> a[5:7]
'is'
>>> a[12:17]
'short'

a[시작 번호:끝 번호]에서 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아낸다.

>>> a[19:]
'You need Python'

a[시작 번호:끝 번호]에서 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아낸다.

>>> a[:17]
'Life is too short'
>>> a[19:-7]
'You need'

a[19:-7]이 뜻하는 것은 a[19]에서부터 a[-8]까지를 말한다. 이 역시 a[-7]은 포함하지 않는다.

자주 사용하게 되는 슬라이싱 기법 중 하나

>>> a = "20010331Rainy"
>>> date = a[:8]
>>> weather = a[8:]
>>> date
'20010331'
>>> weather
'Rainy'

문자열 포매팅

문자열 포매팅

>>> "I eat %d apples." % 3
'I eat 3 apples.'

문자열 바로 대입

>>> "I eat %s apples." % "five"
'I eat five apples.'

숫자 값을 나타내는 변수로 대입

>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'

2개 이상의 값 넣기

>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'

문자열 포맷 코드

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

포맷 코드와 숫자 함께 사용하기

>>> "%10s" % "hi"
'        hi'

>>> "%-10sjane." % 'hi'
'hi        jane.'

>>> "%0.4f" % 3.42134234
'3.4213'

>>> "%10.4f" % 3.42134234
'    3.4213'

format 함수를 사용한 포매팅

>>> "I eat {0} apples".format(3)
'I eat 3 apples'

>>> "I eat {0} apples".format("five")
'I eat five apples'

>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'

>>> number = 10
>>> day = "three"
>>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
'I ate 10 apples. so I was sick for three days.'

>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'

>>> "{0:>10}".format("hi")
'        hi'

>>> "{0:^10}".format("hi")
'    hi    '

>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'

>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'

>>> "{0:10.4f}".format(y)
'    3.4213'

>>> "{{ and }}".format()
'{ and }'

>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'

>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

>>> f'{"hi":<10}'  # 왼쪽 정렬
'hi        '
>>> f'{"hi":>10}'  # 오른쪽 정렬
'        hi'
>>> f'{"hi":^10}'  # 가운데 정렬
'    hi

>>> f'{"hi":=^10}'  # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}'  # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'

>>> y = 3.42134234
>>> f'{y:0.4f}'  # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'

>>> f'{{ and }}'
'{ and }'

문자열 관련 함수들

문자 개수 세기(count)

>>> a = "hobby"
>>> a.count('b')
2

위치 알려주기1(find)

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1

위치 알려주기2(index)

>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found

문자열 삽입(join)

>>> ",".join('abcd')
'a,b,c,d'

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

소문자를 대문자로 바꾸기(upper)

>>> a = "hi"
>>> a.upper()
'HI'

대문자를 소문자로 바꾸기(lower)

>>> a = "HI"
>>> a.lower()
'hi'

왼쪽 공백 지우기(lstrip)

>>> a = " hi "
>>> a.lstrip()
'hi '

오른쪽 공백 지우기(rstrip)

>>> a= " hi "
>>> a.rstrip()
' hi'

양쪽 공백 지우기(strip)

>>> a = " hi "
>>> a.strip()
'hi'

문자열 바꾸기(replace)

>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'

문자열 나누기(split)

>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']

참고 : https://wikidocs.net/13

728x90
반응형
LIST

'Program > Python' 카테고리의 다른 글

Python 자료형 : 딕셔너리  (0) 2020.09.07
Python 자료형 : 튜플  (0) 2020.09.07
Python 자료형 : 리스트  (0) 2020.09.07
Python 자료형 : 숫자형  (0) 2020.09.06
Mac에 Homebrew로 Python3 설치  (0) 2020.09.04