일반적으로 프로그래머는 숫자를 다루기 때문에 수학을 잘해야 한다고 생각한다. 하지만 사실 프로그래머 대부분은 숫자보다 "문자열"로 더 많은 고민을 한다. 「논리적인 사고 능력은 수학 능력보다 중요하다.」
「문자열은 파이썬 시퀸스의 첫 번째 예제다」
> 작은따옴표(' ')와 큰따옴표(" ")를 사요하여 문자열을 생성할 수 있다.
> 두가지 종류의 따옴표가 있는 이유: 따옴표가 포함된 문자열을 만들기 위해서
print('the rare double quiot in "capitialcity"')
->the rare double quiot in "capitialcity
※(""" """)과 (''' ''')로도 나타낼 수 있다. 하지만 이는 여러 줄의 문자열에서 유용하게 사용된다.
poem='''there was a young lady of norway
who causlly set in a doorway'''
> 작은 따옴표 안에 여러 줄이 있다면 문자열 끝에 들어 있는 라인 끝 문자와 라인 끝에 있는 공백도 보존된다.
「 str( ) 」: 다른 데이터 타입을 문자열로 변환할 수 있다.
> 문자열이 아닌 객체를 print( )로 호출하거나 문자열 포매팅을 사용할 때 파이썬은 내부적으로 str( )을 사용한다.
「 \ 」: 이스케이프 문자
- \n: 줄바꿈
- \t: 4칸 공백을 둠
- 문자열에서 \' 또는 \"를 사용하면 작은따옴표나 큰 따옴표를 표현할 수 있다.
- \\: 백슬래시를 입력할 수 있다.
※ 원시 문자열은 이스케이프 문자를 무효화한다.
「 + 」: 결합
> "+"연산자를 사용하면 리터럴 문자열 또는 문자열을 결합할 수 있다.
"hello!"+"every one"
->'hello! every one"
> 리터럴 문자열(문자열 변수가 아님)은 다음과 같이 결합할 수 있다.
"Alas!""the kraken!"
->'Alas! the kraken!'
> 파이썬은 문자열을 결합할 때 공백을 자동으로 붙이지 않는다.
a='duck'
b=a
c='grey duck!'
a+b+c
->'duck duck grey duck!'
print(a,b,c)
->duck duck grey duck!
「 * 」: 복제
start='Na'*4+'\n'
middle='Hey'*3+'\n'
end='goodbye
print(start+middle+end)
->
NaNaNaNa
HeyHeyHey
goodbye
「 [ ] 」: 문자 추출
> 문자열에서 한 문자를 얻기 위해서 문자열 이름 뒤에 대활호([ ])와 offset을 지정한다. 가장 왼쪽의 오프셋은 0이고, 그다음은 1,2,3, 이러한 형식으로 진행된다.
> 가장 오른쪽의 문자열은 -1이다. 그다음은 -2, -3 이러한 형식이다.
> 슬라이스로 부분 문자열 추출: 슬라이스를 사용하여 문자열 일부를 추출할 수 있다.
대괄호를 사용하여 start offset, end offset, 옵션으로 step을 명시하여 슬라이스를 정의한다.
- [:]: 처음부터 끝가지 전체 시퀀스를 추출한다.
- [start: ]: start 오프셋부터 끝까지 시퀀스를 추출한다.
- [:end ]: 처음부터 (end-1)까지의 시퀸스를 추출한다.
- [start : end]: start 오프셋부터 (end-1) 오프셋까지 시퀀스를 추출한다.
- [start:end:step]: step만큼 문자를 건너뛰면서, start 오프셋부터 (end-1) 오프셋까지 시퀀스를 추출한다
letters='abcdefghijklmnopqrstuvwxyz'
letters[:]
->'abcdefghijklmnopqrstuvwxyz'
letters[20:]
->'uvwxyz'
letters[10:]
->'klmnopqrstuvwxyz'
letters[12:15]
->'mno'
letters[-3]
->'x'
letters[-3:]
->'xyz'
letters[18:-3]
->'stuvw'
letters[-6:-2]
->'uvwx'
letters[::7]
->'ahov'
letters[4:20:3]
->'ehknqt'
letters[19::4]
->'tx'
letters[:21:5]
->'afkpu'
letters[-1::-1]
->'zyxwvutsrqponmlkjihgfedcba'
letters[::-1]
->'zyxwvutsrqponmlkjihgfedcba'
letters[-50:]
->'abcdefghijklmnopqrstuvwxyz'
letters[:70]
'abcdefghijklmnopqrstuvwxyz'
「 len( ) 」: 문자열 길이
letters='abcdefghijklmnopqrstuvwxyz'
len(letters)
->26
empty=""
len(empty)
-letters='abcdefghijklmnopqrstuvwxyz'
len(letters)
->0
「 split( ) 」: 문자열 나누기
> 어떤 구분자를 기준으로 하나의 문자열을 작은 문자열들의 리스트로 나누기 위해서는 문자열 내장 함수 split( )을 사용한다.
tasks='It took, a minute, to regret, my attention'
tasks.split(',')
->['It took', ' a minute', ' to regret', ' my attention']
「 join( ) 」: 문자열 결합하기
> join( ) 메서드는 문자열 리스트 string.join(list) 형태로 결합한다.
puth=['Get', 'her', 'name', 'and', 'get her number']
puth_song=', '.join(puth)
print('join=', puth_song)
->join= Get, her, name, and, get her number
「 replace( ) 」: 문자열 대체하기
> 문자열 일부를 대체하기 위해서 replace() 메서드를 사용한다. 인수로 바꿀 문자열, 대체할 새 문자열, 바꿀 문자열에 대한 횟수를 입력한다. 이때 메서드는 원본 문자열을 수정하지 않고 변경된 문자열을 반환한다. 마지막 인수를 생각하면 모든 인스턴스를 바꾼다.
setup='a duck goes in to a kitchen'
setup.replace('duck', 'chicken')
-> 'a chicken goes in to a kitchen'
setup
->'a duck goes in to a kitchen' #원본은 바뀌지 않음
※대체하고 싶은 정확한 문자열을 안다면 replace( ) 메서드가 적합하다. 하지만 주의해야 할 점이 있으면 한 문자 'a'를 'a '(a다음에 스페이스)로 대체할 때는 다른 단어에 있는 a도 바뀔 수 있다.
「 strip( ) 」: 문자열 스트립
> 특정 문자를 제거하는 것.
> lstrip()은 왼쪽 끝, rstrip()은 오른쪽 끝만 제거한다.
space=' earth'
space.strip()
->'earth'
space.strip(' ')
->'earth'
space.lstrip()
->'earth'
space.rstrip()
->' earth'
> 문자열에서 strip() 메서드에 해당하는 인수가 없다면 아무 일도 발생하지 않는다.
> strip() 메서드에서 아무 인수가 없거나(공백), 단일 문자 또는 여러 문자의 인수를 취해서 해당 문자열을 제거할 수 있다.
moon='no one goes....!!'
moon.strip(.!)
->'no one goes'
「포매팅」
format_string% data: format_string안에 끼워 넣을 데이터를 표시하는 형식
> 변환타입
%s | 문자열 |
%d | 10진수 |
%x | 16진수 |
%o | 8진수 |
%f | 10진 부동소수점 |
%e | 지수로 나타낸 부동소수점 |
%g | 10진 부동소수점 혹은 지수로 나타낸 부동소수점 |
%% | 리터럴% |
{}. format() : 파이썬 3.0 이상부터는 이 방법 추천
> format_stirng.format(data) 형식
thing='woodchuck'
'{}'.format(thing)
->'woodchuck'
place='lake'
'the {} is in the {}.'.format(thing, place)
->'the woodchuck is in the lake
> 아래와 같이 위치별로 인수를 지정할 수 도 있음. 값 0은 첫 번째 인수 place를 나타내고, 값 1은 두 번째 인수 thing을 나타낸다.
'the {1} is in the {0}.'.format(place, thing)
->the woodchuck is in the lake
f-문자열
>첫 인용 부호 앞에 문자 f 또는 F를 입력한다
> 변수 이름이나 식을 중괄호 안에 포함해 값을 문자열로 가져온다.
thing='wereduck'
place='werepond'
f'the {thing} is in the {place}'
->'the wereduck is in the werepond'
> 다음과 같이 중괄호 안에 표현식을 사용할 수 도 있다.
f'the {thing. capitalize()} is in the {place.rjust(20)}'
->'the Wereduck is in the werepond'