Python 문자열 응용문법

문자열 바꾸기

문자열.replace(‘바꿀문자열’, ‘새문자열’) : 문자열 단위로 바꾼다.
print('hellow python'.replace('python','world'))
>>>hellow python

문자 바꾸기

문자열.translate(str.maketrans(‘바꿀문자열’, ‘새문자열’)) : 문자 단위로 바꾼다.
table = str.maketrans('aeiou', '12345') 
print('apple'.translate(table))
>>>1ppl2

문자열 분리

문자열.split(‘요소’) : 지정 요소를 기준으로 문자열 분리한다.(미지정시 공백으로 분리)
print('aab abb abc acc'.split())
>>>['aab', 'abb', 'abc', 'acc']

print('aab,abb,abc,acc'.split(','))
>>>['aab', 'abb', 'abc', 'acc']

문자열 연결

‘요소’.join(리스트) : 지정 요소로 문자열 연결한다.
print(' '.join(['aab', 'abb', 'abc', 'acc']))
>>>aab abb abc acc

print(','.join(['aab', 'abb', 'abc', 'acc']))
>>>aab,abb,abc,acc

대소문자 변경

문자열.upper() : 소문자를 대문자로 변경한다.
문자열.lower() : 대문자를 소문자로 변경한다.
print('aaa'.upper())
>>>AAA

print('AAA'.lower())
>>>aaa

공백 삭제

문자열.lstrip(‘요소’) : 왼쪽 기준으로 처음 나오는 문자의 왼쪽 지정 요소를 제거한다.
문자열.rstrip(‘요소’) : 오른쪽 기준으로 처음 나오는 문자의 오른쪽 지정 요소를 제거한다.
문자열.strip(‘요소’) : 각 양 끝에 처음 나오는 문자까지의 지정 요소를 제거한다.

* 요소 미지정시 공백 제거
print('    a    '.lstrip())
print('    a    '.rstrip())
print('    a    '.strip())
>>>'a    '
>>>'    a'
>>>'a'

print(', python.'.lstrip(',.'))
print(', python.'.rstrip(',.'))
print(', python.'.strip(',.'))
>>>' python.'
>>>', python'
>>>' python'

문자열 정렬하기

문자열.ljust(자릿수) : 자릿수만큼의 공간을 확보하고 왼쪽으로 정렬한다.
문자열.rjust(자릿수) : 자릿수만큼의 공간을 확보하고 오른쪽으로 정렬한다.
문자열.center(자릿수) : 자릿수만큼의 공간을 확보하고 가운데쪽으로 정렬한다.
print('python'.ljust(10))
print('python'.rjust(10))
print('python'.center(10))
>>>'python    '
>>>'    python'
>>>'  python  '

문자열 0 채우기

문자열.zfill(자릿수) : 자릿수만큼의 공간을 확보하고 빈칸을 0으로 채운다.
print('1'.zfill(4))
>>>0001

문자열 위치 찾기

문자열.find(‘요소’) : 왼쪽을 기준으로 처음 검색된 지정 요소의 인덱스를 반환한다. 못 찾으면 -1을 반환한다.
문자열.rfind(‘요소’) : 오른쪽을 기준으로 처음 검색된 지정 요소의 인덱스를 반환한다. 못 찾으면 -1을 반환한다.
문자열.index(‘요소’) : 왼쪽을 기준으로 처음 검색된 지정 요소의 인덱스를 반환한다. 못 찾으면 에러가 발생한다.
문자열.rindex(‘요소’) : 오른쪽을 기준으로 처음 검색된 지정 요소의 인덱스를 반환한다. 못 찾으면 에러가 발생한다.
print('apple pineapple'.find('pl'))
>>>2     #중복시 처음찾은 인덱스
print('apple pineapple'.find('xy'))
>>>-1    #없으면 -1

print('apple pineapple'.rfind('pl'))
>>>12     #중복시 처음찾은 인덱스
print('apple pineapple'.rfind('xy'))
>>>-1    #없으면 -1

print('apple pineapple'.index('pl'))
>>>2     #중복시 처음찾은 인덱스

print('apple pineapple'.rindex('pl'))
>>>12     #중복시 처음찾은 인덱스

특정문자열 개수 세기

문자열.count(‘요소’) : 지정 요소가 몇 번 나오는지 반환한다.
print('apple pineapple'.count('pl'))
>>>2

서식지정자로 문자열 넣기

# %s에 aaa라는 문자열 대입(%s는 문자열 대입 서식)
print('%s' % 'aaa') 
>>>aaa

# %s에 a 문자열 변수의 값을 대입
a='aaa'
print('%s' % a) 
>>>aaa

# %d에 20이라는 정수 대입(%d는 정수 대입 서식)
print('%d' % 20) 
>>>20

# %f에 2.5라는 실수 대입(%f는 실수 대입 서식)
print('%f' % 2.5) 
>>>2.5

# %.3f를 사용하여 대입되는 실수의 소숫점 셋째자리까지 표시
print('%.3f' % 2.5) 
>>>2.500

# %10s를 사용하여 대입되는 문자열을 10자리 공간에 표시
print('%10s' % 'aaa') 
>>>'       aaa'

# {인덱스}를 사용하여 값을 순서에 맞춰 값을 대입
print('{0} {2} {1}'.format('a','b','c'))  
>>>a c b

# {키}를 사용하여 값을 키에 맞는 위치에 값을 대입
print('{a} {b} {c}'.format(a='aaa',b='bbb',c='ccc'))
>>>aaa bbb ccc

# f' {변수}'를 사용하여 변수 값을 대입 
a='aaa'
b='bbb'
c='ccc'
print(f'{a} {b} {c}')
>>>aaa bbb ccc

# '{0:<10}'를 사용하여 0인덱스에 aaa라는 문자열을 10자리 공간에 왼쪽정렬하여 표시
print('{0:<10}'.format('aaa'))
>>>'aaa       '

# '{0:<10}'를 사용하여 0인덱스에 aaa라는 문자열을 10자리 공간에 오른쪽정렬하여 표시
print('{0:>10}'.format('aaa'))
>>>'       aaa'

# '%03d'를 사용하여 3자리 공간에 정수 1을 대입하고 나머지 공백은 0으로 표시
print('%03d' % 1)
>>>001

# '{0:03d}'를 사용하여 3자리 공간에 정수 35을 대입하고 나머지 공백은 0으로 표시
print('{0:03d}'.format(35))
>>>035

# '%08.2f'를 사용하여 8자리 공간에 3.6을 소숫점 둘째자리까지 표시하고 나머지 공백은 0 표시
print('%08.2f' % 3.6)
>>>00003.60

# '%08.2f'를 사용하여 8자리 공간에 150.37을 소숫점 둘째자리까지 표시하고 나머지 공백은 0 표시
print('{0:08.2f}'.format(150.37))
>>>00150.37

print('{0:0<10}'.format(15))    # 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
>>>1500000000
print('{0:0>10}'.format(15))    # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
>>>0000000015
print('{0: >10}'.format(15))    # 남는 공간을 공백으로 채움
>>>'        15'
print('{0:>10}'.format(15))     # 채우기 부분을 생략하면 공백이 들어감
>>>'        15'
print('{0:x>10}'.format(15))    # 남는 공간을 문자 x로 채움
>>>'xxxxxxxx15'

#천단위 콤마
print(format(1493500, ','))
>>>'1,493,500'
print('%20s' % format(1493500, ','))    # 길이 20, 오른쪽으로 정렬
>>>'           1,493,500'
print('{0:,}'.format(1493500))
>>>'1,493,500'
print('{0:>20,}'.format(1493500))     # 길이 20, 오른쪽으로 정렬
>>>'           1,493,500'
print('{0:0>20,}'.format(1493500))    # 길이 20, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
>>>'000000000001,493,500'

문자열 메서드

메서드 설명
replace(‘바꿀문자열’, ‘새문자열’)문자열 안의 문자열을 다른 문자열로 바꿈
translate(테이블)문자열 안의 문자를 다른 문자로 바꿈, str.maketrans(‘바꿀문자’, ‘새문자’)로 변환 테이블을 만들어야 함
split()
split(‘기준문자열’)
공백을 기준으로 문자열을 분리하여 리스트로 만듦기준 문자열을 지정하면 기준 문자열로 문자열을 분리
join(리스트)구분자 문자열과 문자열 리스트(튜플)의 요소를 연결하여 문자열로 만듦
upper()
lower()
upper는 문자열의 문자를 대문자로 바꾸고, lower는 소문자로 바꿈
lstrip(‘삭제할문자들’)
rstrip(‘삭제할문자들’)
strip(‘삭제할문자들’)
lstrip은 문자열에서 왼쪽 삭제할 문자들을 삭제, rstrip은 오른쪽 삭제할 문자들을 삭제, strip은 양쪽 삭제할 문자들을 삭제, 삭제할 문자들을 미지정하면 공백을 삭제
ljust(길이)
rjust(길이)
center(길이)
문자열을 지정된 길이로 만든 뒤 왼쪽(ljust), 오른쪽(rjust), 가운데(center)로 정렬하며 남는 공간은 공백으로 채움
zfill()지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채움
find(‘찾을문자열’)
rfind(‘찾을문자열’)
find는 왼쪽에서부터, rfind는 오른쪽에서부터 특정 문자열을 찾아서 인덱스 반환, 문자열이 없으면 -1을 반환
index(‘찾을문자열’)
rindex(‘찾을문자열’)
index는 왼쪽에서부터, rindex는 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환, 문자열이 없으면 에러 발생
count(‘문자열’) 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아냄
<표 참고링크. https://dojang.io/mod/page/view.php?id=2305>

서식지정자 자료형

자료형 설명
s문자열
b2진수
c문자
d10진 정수
o8진 정수, 예) ‘%o’ % 8은 ’10’
x16진 정수, 0~9, a~f, 예) ‘%x’ % 254는 ‘fe’
X16진 정수, 0~9, A~F, 예) ‘%X’ % 254는 ‘FE’
e실수 지수 표기법, 예) ‘%e’ % 2.3은 ‘2.300000e+00’
E실수 지수 표기법, 예) ‘%E’ % 2.3은 ‘2.300000E+00’
f실수 소수점 표기
F실수 소수점 표기, f와 같음, nan은 NAN, inf는 INF로 표시(nan은 숫자가 아니라는 뜻, inf는 무한대)
g실수 일반 형식, 예) ‘%g’ % 2.3e-10은 ‘2.3e-10’
G실수 일반 형식, 예) ‘%G’ % 2.3e-10은 ‘2.3E-10’
%% 문자 표시
<표 참고링크. https://dojang.io/mod/page/view.php?id=2305>