본문 바로가기
Study (Data Science)/Python

Unit24. 문자열 함수, 포매팅, format함수, %d

by 콜라찡 2022. 11. 26.

1. 바꾸기

  • replace('바꿀문자열', '새문자열') : 단어 >> 문자열 바꾸기
  • str.maketrans('바꿀문자', '새문자') : 단어안의 스펠링 >> 문자열 바꾸기
    • .translate(변수명) : 번역. 즉 apply
  • .upper() : 문자열을 모두 대문자로 바꿈
  • .lower() : 문자열을 모두 소문자로 바꿈

2. 분리하고 합체하기

  • .split('기준문자열') : 기준문자열을 기준으로 스트링을 분리함.
  • '구분자'.join(리스트) : 구분자를 리스트사이에 끼워서 하나의 스트링으로 만듬

3. 삭제

  • .strip('삭제할것') : 왼(lstrip),오(rstrip),양쪽 다 됨

4. 정렬

  • .ljust(숫자) : 왼,오(rjust) 다됨. 숫자만큼 문자열의 길이를 만들어 놓고, 정렬함.
  • .center(숫자) : 가운데 정렬

5. 왼쪽에 0 채우기

  • .zfill(숫자) : zerofill. 왼쪽에 남는만큼 0을 채움

6. 위치 찾기

  • .find('찾을문자열') : 처음 찾은 문자열의 인덱스를 반환하고 없으면 -1을 반환. 오른쪽부터는 rfind
  • .index('찾을문자열') : find와 동일 .다만 없으면 error남. 오른쪽부터는 rindex

7. 갯수 세기

  • .count('문자열') : 현재 문자열에서 특정 문자열이 몇 번 나오는지 반환함

 

# replace
>>> 'Hello, world!'.replace('world', 'Python')
'Hello, Python!'

# str.maketrans 
# .translate(table)
>>> table = str.maketrans('aeiou', '12345')
>>> 'apple'.translate(table)
'1ppl2'

# 대문자로
>>> 'python'.upper()
'PYTHON'
# 소문자로
>>> 'PYTHON'.lower()
'python'

-------------------
# spllit('기준문자열')
>>> 'apple, pear, grape, pineapple, orange'.split(', ')
['apple', 'pear', 'grape', 'pineapple', 'orange']

# '구분자'.join(리스트)
>>> ' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple pear grape pineapple orange'
-------------------

# 공백 삭제
>>> '   Python   '.lstrip()  # left
'Python   '
>>> '   Python   '.rstrip()  # R
'   Python'
>>> '   Python   '.strip()   # both
'Python'
# 문자 삭제
>>> ', python.'.lstrip(',.')
' python.'
-------------------

# 문자 정렬
>>> 'python'.ljust(10)   # left
'python    '
>>> 'python'.center(10)
'  python  '

-------------------

# 왼쪽에 0 채우기
>>> '35'.zfill(4)        # 숫자 앞에 0을 채움
'0035'
>>> '3.5'.zfill(6)       # 숫자 앞에 0을 채움
'0003.5'
>>> 'hello'.zfill(10)    # 문자열 앞에 0을 채울 수도 있음
'00000hello'

-------------------

# 위치 찾기
>>> 'apple pineapple'.find('xy')
-1
>>> 'apple pineapple'.rfind('xy')
-1
>>> 'apple pineapple'.index('pl')
2
>>> 'apple pineapple'.rindex('pl')
12

-------------------

# 갯수 세기
>>> 'apple pineapple'.count('pl')
2

 

 

1. % 서식 지정자 (format specifier)

%로 시작하고 자료형을 뜻하는 문자가 붙음.

두번째 % 이후의 내용이 첫번째 '%' 의 자리에 들어가게됨.

처음 %부분은 삐처리 하고 두번째 % 뒤에 답을 알려주는 방식

 

  • '%s'  %  '문자'  : 문자  string    '나는 %s삐이 입니다.' % '호랑이'
  • '%d'  %  숫자 decimal integer  '나는 %d삐이 년생입니다.' % 2030
  • '%f''  %  실수 fixed point          
  • '%.자릿수f'   %  숫자 
  • '%d %s'  %  (숫자, '문자열')  '오늘은 %d삐월 %s삐요일입니다' % (3,'화')
  • '%숫자s'  %  '문자열'   :  문자열의 길이를 숫자만큼 늘려서 오른쪽정렬. 자릿수를 맞출때 씀.
    • '%10s' % 'python' >> -10 하면 왼쪽에서부터 정렬

>>> 'I am %s.' % 'james'
'I am james.'

>>> 'I am %d years old.' % 20
'I am 20 years old.'

>>> '%f' % 2.3
'2.300000'

>>> '%10s' % 'python'
'    python'

>>> '%-10s' % 'python'
'python    '

>>> '%10d' % 150
'       150'
>>> '%10d' % 15000
'     15000'

>>> '%10.2f' % 2.3
'      2.30'
>>> '%10.2f' % 2000.3
'   2000.30'

>>> 'Today is %d %s.' % (3, 'April')
'Today is 3 April.'

 

2. { } 문자열 포매팅 (String Formatting)  or  format 함수

'{인덱스}' .format(값) : { } 이 위치에 format 뒤의 데이터의 인덱스 값을 넣어줘.

' Let me see.. {1} {2} {0}?'. format('me', 'You', 'love')

>>> 'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6)
'Hello, Python 3.6 Script'

>>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6)
'Hello, Python Script 3.6'

>>> language = 'Python'
>>> version = 3.6
>>> f'Hello, {language} {version}'
'Hello, Python 3.6'

>>> '{0:<10}'.format('python')  # 왼쪽<<<
'python    '
>>> '{0:>10}'.format('python')  # 오른쪽>>>
'    python'
>>> '{:>10}'.format('python')   # 위와 같음. 훨씬 많이씀.
'    python'

>>> language = 'Python'
>>> version = 3.6
>>> f'Hello, {language} {version}'         # f'문자열' 자체가 format 함수
'Hello, Python 3.6'

 

3. 응용하기

숫자 자릿수 갯수 맞추기  : 자릿수만큼 맞출꺼야. 숫자를.

  • 정수
    • '%0자릿수d' % 숫자
    • '{인덱스:0자릿수d'}'.format(숫자)
>>> '%03d' % 1
'001'
>>> '{0:03d}'.format(35)
'035'
  • 실수
    • '%0총자릿수.소숫점뒤로자릿수f' % 숫자
    • '{인덱스:0총자릿수.소숫점뒤로자릿수f'}.format(숫자)
>>> '%08.2f' % 3.6
'00003.60'
>>> '{0:08.2f}'.format(150.37)
'00150.37'
  • 정렬
    • '{인덱스:채울숫자<총길이}' .format(채울자료)
>>> '{0:0<10}'.format(15)    # 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
'1500000000'
>>> '{0:0>10}'.format(15)    # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
'0000000015'

>>> '{0:0>10.2f}'.format(15)    # 길이 10, 오른쪽으로 정렬하고 소수점 자릿수는 2자리
'0000015.00'

>>> '{0: >10}'.format(15)    # 남는 공간을 공백으로 채움
'        15'
>>> '{0:>10}'.format(15)     # 채우기 부분을 생략하면 공백이 들어감
'        15'
>>> '{0:x>10}'.format(15)    # 남는 공간을 문자 x로 채움
'xxxxxxxx15'
참고 | 금액에서 천단위로 콤마 넣기

숫자 중에서 금액은 천단위로 ,(콤마)를 넣죠? 파이썬에서는 간단하게 천단위로 콤마를 넣을 수 있습니다.

먼저 format 내장 함수를 사용하는 방법입니다. 다음과 같이 format 함수에 숫자와 ','를 넣어줍니다.

format(숫자, ',')

>>> format(1493500, ',')
'1,493,500'

format 함수는 서식 지정자와 함께 사용할 수 있습니다. 다음은 콤마를 넣은 숫자를 오른쪽 정렬합니다.

>>> '%20s' % format(1493500, ',')    # 길이 20, 오른쪽으로 정렬
'           1,493,500'

포매팅에서 콤마를 넣으려면 다음과 같이 :(콜론)뒤에 ,(콤마)를 지정하면 됩니다.

>>> '{0:,}'.format(1493500)
'1,493,500'

만약 정렬을 하고 싶다면 정렬 방향과 길이 뒤에 콤마를 지정해줍니다.

>>> '{0:>20,}'.format(1493500)     # 길이 20, 오른쪽으로 정렬
'           1,493,500'
>>> '{0:0>20,}'.format(1493500)    # 길이 20, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
'000000000001,493,500'
728x90

댓글