파이썬 문법

파이썬- 문자열 관련 문법(포매팅, strip, split, join)

토리쟁이 2022. 7. 5. 13:39

<문자열 포맷 코드>

코드 설명
%s 문자열
%c 문자 1개
%d 정수
%f 부동 소수
%o 8진수
%x 16진수
%% 리터럴% (문자'%' 그 자체)

이러한 문자열 포맷 코드를 문자열 안에 삽입한 뒤, 문자열 밖에서(끝에서) %넣을 값을 써주면 된다.

"I eat %d apples." %3 #I eat 3 apples.

number=3
"I eat %d apples." %number #I eat 3 apples.

"I eat %s apples." %"five" #I eat five apples.

day="three"
"I ate %d apples. so I was sick for %s days." %(number,day)
 #I ate 3 apples. so I was sick for three days.

 사실 %s 포맷 코드는 %뒤의 값이 어떤 형태의 값이든 문자열로 바꾸기 때문에 

소수, 정수, 문자 등 모두 %s를 사용하여 문자열에 넣을 수 있다.  

 

 

<format 함수를 사용한 포맷팅>

"I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
#I ate 10 apples. so I was sick for 3 days."

 

 

<소수점 >

"%0.4f" %3.1415926535 #3.1415
"%10.4f" %3.1415926535 #    3.1415 => 정수부분의 길이가 10으로 늘어남


#format 함수 이용
"{0:0.4f}".format(3.1415912) #3.1415
"{0:10.4f}".format(3.1415912) #    3.1415

%전체 길이.소수점 뒤에 나올 숫자의 갯수f

%0.~f => 그냥 그대로 출력인데 뒤에 소수점 갯수만 조정

%10.4f =>전체 길이가 10인데 소수점 4째자리까지 출력 => 빈 공간 10-6=4개 남으므로 앞에서부터 4칸 띄우기

 

format함수를 이용할 때에는 반드시 :를 써야한다

 

 

< strip() >: 문자열에 포함된 특정 문자를 지울 때 사용한다.

 

strip("지우고자하는 문자(열)") : 문자열에 양쪽에 있는 한 칸 이상의 연속된 특정 문자를 지운다.

lstrip("지우고자하는 문자(열)") : 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 특정 문자를 지운다.

rstrip("지우고자하는 문자(열)") : 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 특정 문자를 지운다.

()안에 아무것도 없을 경우 공백을 뜻하므로 공백을 삭제하게 된다.

 

a=" hi "
a.lstrip() #'hi '
a.rstrip() #' hi'
a.strip() #'hi'

 

하나의 문자가 아닌 여러 개의 특정 문자를 지정하여 삭제하고 싶은 경우

=> 그냥 괄호() 안에 그 특정한 문자를 추가해주면 됨 but, ',' 쉼표 사용하지 않고 그냥 옆에 바로 추가할 것

 

text = "......Hello World,,,,,,,,"
text.strip("."",") # 'Hello World'

text = "ababHello Worldabca"
text.strip("a""b""c") # 'Hello World'

 

*strip()을 사용하며 주의할 점*

text = "dog.jpeg"
text.strip(".jpeg") # 'do'

위 예시를 보면, 문자열 뒤쪽의 .jpeg만 삭제하고자 의도하였으나 이 경우, 문자열에 맨 끝에 이어져 있는   ".", "j", "p", "e", "g"를 모두 삭제해버리고 만다. => .앞에 g도 이어져있어서 같이 삭제되는 대참사 발생..

==> 따라서 이를 방지해주기 위해서는 제거하고 싶은 문자열의 연결을 강제로 분리시켜 주어야 한다.

 

text = "dog_a.jpeg"
text.strip(".jpeg") # 'dog_a'

 

 

<translate()> : 여러 개의 문자열을 한 번에 치환하거나 삭제할 때 사용한다.

translate 메소드는 str.maketrans 함수와 함께 사용한다.

text ="translate、allows・us・to・delete・multiple・letters。"
table = text.maketrans({
    '、': ' ', #왼쪽은 치환하고 싶은 문자, 오른쪽은 새로운 문자
    '。': '.', #왼쪽은 치환하고 싶은 문자, 오른쪽은 새로운 문자
    '・': ' ', #왼쪽은 치환하고 싶은 문자, 오른쪽은 새로운 문자
})
print(text) # 'translate、allows・us・to・delete・multiple・letters。'
print(text.translate(table)) # 'translate allows us to delete multiple letters.'

 

 

<re.sub()>: 여러 개의 문자열을 한 번에 치환하거나 삭제할 때 사용한다.

import re #맨 처음에는 re 모듈을 import한다.
re.sub(치환하고 싶은 문자열(정규표현), 새로운 문자열(정규표현), 대상변수 ,[치환횟수])
import re
text = "abc123def456ghi"

new_text = re.sub(r"[a-z]", "", text) # text 문자열 안의 모든 알파벳을 삭제
print(new_text) # '123456'

new_text = re.sub(r'[1-9]', "", text) # text 문자열 안의 모든 숫자를 삭제
print(new_text) # 'abcdefghi'

 

 

<split()>: 문자열에서 특정 구분자를 기준으로 나눌 때 사용한다.

주로 한 줄에 걸쳐 여러 개를 입력받을 때 split을 사용함으로써, 각각의 입력값을 분리시킨다.

a=input().split()
print(a)

공백으로 입력값을 나눔

()안에 아무것도 없을 경우 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 줌

 

 

 

<join>: 문자열 삽입

문자열에 특정한 것을 삽입한다.

#abcd문자열의 각각의 문자 사이에 ','를 삽입
",".join('abcd') #'a,b,c,d'

"삽입하고자하는 것".join(문자열)

 

조인은 리스트와 튜플을 모두 문자열로 만드는데 활용될 수 있다.

ㅣ=['a','b','c']
''.join(l) #'abc'

 

 

+)문자열의 위치를 알려주는 함수 => find, index

a.find(찾고자하는 문자) : 만약 존재하지 않는다면, -1 반환

a.index(찾고자하는 문자) : 만약 존재하지 않는다면, 오류 발생