'안녕하세요? 반갑습니다.''안녕하세요? 반갑습니다.'
데이터 분석에 있어서 문자열(텍스트) 데이터의 중요성
파이썬의 문자열은 작은 따옴표(’) 나 큰 따옴표(“) 모두 구분없이 사용하여 문자열을 생성할 수 있습니다.
작은 따옴표(’) 사용
'안녕하세요? 반갑습니다.''안녕하세요? 반갑습니다.'
큰 따옴표(“) 사용
"안녕하세요? 반갑습니다."'안녕하세요? 반갑습니다.'
작은 따옴표 3개 혹은 큰 따옴표 3개를 써서 여러 줄의 문자열을 생성할 수 있습니다.
sample = '''안녕하세요?
반가워요
내이름은
파이썬 입니다.'''
print(sample)안녕하세요?
반가워요
내이름은
파이썬 입니다.
sample = """안녕하세요?
반가워요
내이름은
파이썬 입니다.
웰컴!
"""
print(sample)안녕하세요?
반가워요
내이름은
파이썬 입니다.
웰컴!
print('헬로우 파이썬')헬로우 파이썬
print('문자열 첫째', '그리고, 둘째')문자열 첫째 그리고, 둘째
end 옵션으로 출력될 마지막 글자를 변경할 수 있습니다. (기본값: )
print('여기까지!', end='end출력!')여기까지!end출력!
sep 옵션으로 출력될 문자열 사이에 출력될 글자를 변경할 수 있습니다. (기본값: 공백)
print('문자1', '문자1', '문자3', sep=' <구분> ')문자1 <구분> 문자1 <구분> 문자3
"안녕하세요? %s" % ('반갑습니다.')'안녕하세요? 반갑습니다.'
'안녕하세요? %.3f' % (0.123456)'안녕하세요? 0.123'
'안녕하세요? %d' % (12345)'안녕하세요? 12345'
'안녕하세요? %c' % ('a')'안녕하세요? a'
'웰컴투? {}'.format('파이썬.')'웰컴투? 파이썬.'
'비밀번호 {}'.format(486)'비밀번호 486'
소수점 2자리 까지 제한하는 경우 (그 이하자리는 반올림)
'원주율? {:.2f}'.format(3.141592)'원주율? 3.14'
name = '펭수'
age = 10
print(f'나의 이름은 {name}입니다. 나이는 {age} 살입니다.')나의 이름은 펭수입니다. 나이는 10 살입니다.
print(f'내년에 저는 {age+1} 살입니다.')내년에 저는 11 살입니다.
d = {'name':'펭수', 'age':10}print(f"반가워요. 저는 {d['name']}입니다. 저의 나이는 {d['age']} 살입니다.")반가워요. 저는 펭수입니다. 저의 나이는 10 살입니다.
len('banana')6
공백은 길이에 포함됩니다.
len('banana pen')10
len('한글')2
공백은 길이에 포함됩니다.
len('한글 킹왕짱')6
a = 'Python is my life'
a'Python is my life'
| P | y | t | h | o | n | i | s | m | y | l | i | f | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
a[0]'P'
a[-2]'f'
a = 'Python is my life'
a'Python is my life'
| P | y | t | h | o | n | i | s | m | y | l | i | f | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
[:]을 활용하여 전체를 추출할 수 있습니다.
a[:]'Python is my life'
| P | y | t | h | o | n | i | s | m | y | l | i | f | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
[start:]는 시작 index 부터 끝까지 추출합니다.
a[3:]'hon is my life'
a[-4:]'life'
| P | y | t | h | o | n | i | s | m | y | l | i | f | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
[:end]는 처음부터 end 전까지 추출합니다.
a[:6]'Python'
a[:-3]'Python is my l'
| P | y | t | h | o | n | i | s | m | y | l | i | f | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
[start:end]는 start부터 end 전까지 추출합니다.
a[3:6]'hon'
[start:stop:step]에서 step 지정시 step만큼 건너 뛰면서 추출합니다.
a[::2]'Pto sm ie'
역순으로 출력하기 위해서는 step을 -1로 지정합니다.
a[::-1]'efil ym si nohtyP'
a = 'Python is my life'index에 값을 할당하여 변경하려는 경우
a[2] = 'Y'--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-37-f2db0e8f1888> in <module> ----> 1 a[2] = 'Y' TypeError: 'str' object does not support item assignment
del로 부분 삭제하려는 경우
del a[2]--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-38-734682c6a06c> in <module> ----> 1 del a[2] TypeError: 'str' object doesn't support item deletion
덧셈은 문자열을 연결합니다.
a = '반갑습니다!'
b = '웰컴 투 파이썬'a + b'반갑습니다!웰컴 투 파이썬'
a + '???''반갑습니다!???'
'hello' + ', world''hello, world'
문자열을 곱한 숫자 만큼 반복하여 생성합니다.
a * 2'반갑습니다!반갑습니다!'
print('abc ' * 5)
print('===' * 7)abc abc abc abc abc
=====================
list('ABCDE')['A', 'B', 'C', 'D', 'E']
set('AAABBBCCC'){'A', 'B', 'C'}
중복이 제거된 리스트로 생성하기 위해서는 list로 다시 타입 변환합니다.
list(set('AAABBBCCC'))['A', 'B', 'C']
문자열만 가지고 있는 고유의 편한 기능들이 있습니다.
우리는 이들 중 몇 가지를 배워 앞으로 유용하게 활용할 예정입니다.
a = 'This is a pen'기본 값으로 공백이 지정되어 있습니다. 즉, 공백을 기준으로 분리하여 리스트로 반환합니다.
a.split()['This', 'is', 'a', 'pen']
기본 값인 공백에서 특정 문자로 지정할 수 있습니다.
a = 'This-is-a-pen'a.split('-')['This', 'is', 'a', 'pen']
aa = a.split('-')
aa['This', 'is', 'a', 'pen']
aa에 반환된 리스트를 대입 후 index로 값을 조회할 수 있습니다.
aa[0]'This'
aa[2]'a'
aa[0] + aa[2]'Thisa'
한글도 동일하게 적용됩니다.
a = '한글은 어떻게 될까요?'a.split()['한글은', '어떻게', '될까요?']
'-'.join(['010', '1234', '5678'])'010-1234-5678'
'-'.join('ABCDE')'A-B-C-D-E'
a = 'My name is Teddy'소문자로 변경
a.lower()'my name is teddy'
대문자로 변경
a.upper()'MY NAME IS TEDDY'
한글에는 대소문자 구분이 없습니다.
a = '한글엔 대소문자가 없어요ㅠ'a.lower()'한글엔 대소문자가 없어요ㅠ'
a.upper()'한글엔 대소문자가 없어요ㅠ'
시작과, 끝이 맞는지 결과를 bool로 반환합니다.
a = '01-sample.png'a.startswith('01')True
a.startswith('02')False
a.endswith('.png')True
a.endswith('.jpg')False
a = '01-sample.png'a.replace('.png', '.jpg')'01-sample.jpg'
반환값은 복사본이며 원본에 변경사항이 바로 적용되지 않습니다.
a'01-sample.png'
new_a = a.replace('.png', '.jpg')print(new_a)01-sample.jpg
a = ' 01-sample.png 'print(a) 01-sample.png
strip은 불필요한 공백을 제거해 줍니다.
a.lstrip()'01-sample.png '
a.rstrip()' 01-sample.png'
a.strip()'01-sample.png'