언어/PYTHON

텍스트 문자열

빨대도둑 2022. 10. 12. 14:36

일반적으로 프로그래머는 숫자를 다루기 때문에 수학을 잘해야 한다고 생각한다. 하지만 사실 프로그래머 대부분은 숫자보다 "문자열"로 더 많은 고민을 한다. 「논리적인 사고 능력은 수학 능력보다 중요하다.」

 

「문자열은 파이썬 시퀸스의 첫 번째 예제다」

>  작은따옴표(' ')와 큰따옴표(" ")를 사요하여 문자열을 생성할 수 있다. 

> 두가지 종류의 따옴표가 있는 이유: 따옴표가 포함된 문자열을 만들기 위해서

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'

 

 

'언어 > PYTHON' 카테고리의 다른 글

함수, 예외  (0) 2022.10.17
딕셔너리와 셋  (0) 2022.10.14
튜플, 리스트  (1) 2022.10.13
조건, 반복  (0) 2022.10.12
데이터 타입  (0) 2022.10.10