문자열 바꾸기

매일 공부(ML)·2022년 1월 12일
0

Python

목록 보기
27/38

문자열 응용하기

<문자열 바꾸기>

  • replace('바꿀문자열', '새문자열')
    <문자 바꾸기>
  • str.maketrans('바꿀문자','새문자')
    translate(테이블)-문자열 안의 문자를 다른 문자로 바꿉니다.
    --> 문자를 바꾼 뒤 결과를 반환.
    ex)
>>> table = str.maketrans('aeiou', '12345')
>>> 'apple'.translate(table)
'1ppl2'

<문자열 분리>

split()- 공백을 기준으로 문자열 분리하여 리스트 만든다.

>>> 'apple pear grape pineapple orange'.split()
['apple', 'pear', 'grape', 'pineapple', 'orange']

물론,()안에 ('기준문자열') 가능함

join(리스트)- 구분자 문자열과 문자열 리스트의 요소 연결

>>> ' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple pear grape pineapple orange'

>>> '-'.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple-pear-grape-pineapple-orange'

upper(): 소문자->대문자

>>> 'python'.upper()
'PYTHON'

lower(): 대문자->소문자

>>> 'PYTHON'.lower()
'python'

<공백 삭제>

i)왼쪽
lstrip(): 문자열 왼쪽에 있는 연속된 모든 공백 삭제

>>> '   Python   '.lstrip()
'Python 

ii)오른쪽
rstrip(): 문자열에서 오른쪽에 있는 연속된 모든 공백 삭제

>>> '   Python   '.rstrip()
'   Python'

iii)양쪽

strip(): 문자열에서 양쪽에 있는 연속된 모든 공백 삭제

>>> '   Python   '.strip()
'Python'

<특정 문자 삭제>

i)왼쪽
lstrip('삭제할문자들')

ii)오른쪽
rstrip('삭제할문자들')

iii)양쪽
strip('삭제할 문자들')


<문자열 정렬>

i)왼쪽

ljust(길이): 문자열을 지정된 길이(칸)로 만든다.(왼쪽정렬)

>>> 'python'.ljust(10)
'python    '

ii)오른쪽

rjust(길이): 문자열을 지정된 길이(칸)으로 만든다.(오른쪽정렬)

>>> 'python'.rjust(10)
'    python'

iii)가운데

center(길이): 문자열을 지정된 길이로 만든 후 가운데 정렬

>>> 'python'.center(11)
'   python  '

->연속 채우기


 >>> 'python'.rjust(10).upper()
'    PYTHON
```'
 
  
<문자열 왼쪽에 0채우기>
    
  zfill(길이): 지정된 길이에 맞춰서 문자열의 왼쪽0채움

  
<문자열 위치 찾기>
    
  find('찾을문자') : 있으면 반환, 없으면 -1

'apple pineapple'.find('pl')
2
'apple pineapple'.find('xy')
-1

  
<오른쪽에서부터 문자열 위치 찾기>
  
    rindex('찾을문자열'): 오른쪽에서부터 특정 문자열 찾아서 인덱스 반환.
  

'apple pineapple'.rindex('pl')
12

  
<문자열 개수 세기
     
     count('문자열'): 현재 문자열에서 특정 문자열이 얼마나 나오나!!
 

'apple pineapple'.count('pl')
2

[문자열 만드는 법]

i)서식 지정자(format specifier)
ii)문자열 포매팅(string formatting) by format메서드

i]
서식지정자는 %로 시작하고 자료형을 뜻하는 문자가 붙음

1)s:string


-'%s' % '문자열'
    'I am %s.' % 'james'

'I am james.'
2)d: 10진 정수
-'%d' % 숫자
   'I am %d years old.' % 20
'I am 20 years old.'  
3)f: 소수점

-'%f' % 숫자
    >>> '%f' % 2.3
'2.300000'   

<문자열 정렬>
%길이s

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

%10s는 문자열의 길이를 10으로 만든 뒤 지정된 문자열을 넣고 오른쪽으로 정렬합니다. 따라서 문자열 'python'은 길이가 6이므로 왼쪽 공간을 공백 4칸으로 채웁니다.

%-길이s
   
    >>> '%-10s' % 'python'
'python    '
     

%-10s는 문자열의 길이를 10으로 만든 뒤 지정된 문자열을 넣고 왼쪽으로 정렬합니다. 따라서 문자열 'python'은 길이가 6이므로 오른쪽 공간을 공백 4칸으로 채웁니다.

 <서식 지정자로 문자열 안에  여러  넣기>
     
     '%d %s' % (숫자, '문자열')
         
>>> 'Today is %d %s.' % (3, 'April')
'Today is 3 April.' 

ii]
<format 메서드 사용>
-'{인덱스}'.format(값)

>>> 'Hello, {0}'.format('world!')
'Hello, world!'
>>> 'Hello, {0}'.format(100)
'Hello, 100'

<format 메서드로 값을 여러 개 넣기>

>>> 'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6)
'Hello, Python 3.6 Script'
  <format 메서드로 같은  여러  넣기>
    
    
>>> '{0} {0} {1} {1}'.format('Python', 'Script')
'Python Python Script Script'
      <format 메서드에서 인덱스 생략>
        
>>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6)
'Hello, Python Script 3.6'
          <format 메서드에서 인덱스 대신 이름 지정>
            
>>> 'Hello, {language} {version}'.format(language='Python', version=3.6)
'Hello, Python 3.6'
              <문자열 포매팅에 변수를 그대로 사용>
                    
 >>> language = 'Python'
>>> version = 3.6
>>> f'Hello, {language} {version}'
'Hello, Python 3.6'
       <format메서드로 문자열 정렬>
         
           -'{인덱스:<길이}'.format(값)
               
>>> '{0:<10}'.format('python')
'python    ' 
           -'{인덱스:>길이}'.format(값)
           
>>> '{0:>10}'.format('python')
'    python'  
           <숫자 개수 맞추기>
             
               - '%0개수d' % 숫자
               - '{인덱스:0개수d'}'.format(숫자)
>>> '%03d' % 1
'001'
>>> '{0:03d}'.format(35)
'035'

-->%d는 다음과 같이 %와 d 사이에 0과 숫자 개수를 넣어주면 자릿수에 맞춰서 앞에 0이 들어갑니다. 즉, %03d로 지정하면 1은 '001', 35는 '035'가 됩니다. { }를 사용할 때는 인덱스나 이름 뒤에 :(콜론)를 붙이고 03d처럼 0과 숫자 개수를 지정하면 됩니다.

              -'%0개수.자릿수f' % 숫자
              -'{인덱스:0개수.자릿수f'}.format(숫자)
                 
>>> '%08.2f' % 3.6
'00003.60'
>>> '{0:08.2f}'.format(150.37)
'00150.37'

<채우기와 정렬을 조합해서 사용하기>

  -'{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'
  
>>> '{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'
profile
성장을 도울 아카이빙 블로그

0개의 댓글