파이썬 문법 :: 문자열 스트링(r, f) / 문자열 메서드(strip, split, join, 대소문자, replace)

프로그래머스 기초 코딩문제를 복습 하면서 정리한 [문자열 관련 포스팅]



목차

· 문자열 스트링
    1. raw string
    2. f string

· 문자열 내장 메서드
    1. strip()
    2. split() 
    3. join()
    4. 문자열 대소문자 관련
    5. replace()
    6. 포매팅 형식




 

문자열 스트링

1. raw string

상황 : 특수문자가 포함된 문자열을 출력할때 
효과 : r을 붙인 문자열 안의 모든 특수 문자에 자동으로 \이 추가로 붙여져, \n, \', \" 으로 치환됨

문법 : 문자열 다음표 맨앞에 r 을 붙인다. 
예시 : print(r"!@#$%^&*(":;?") -  온전하게 출력됨 



2. f string

상황 : 문자열 포매팅을 할때
효과 : 문자열과 변수, 수식연산이 필요한 표현식 등을 구분지어 쓰지않고, 한 줄로 표현 가능 

문법 : 문자열 맨앞에 f를 붙이고, 문자열 안에서는 중괄호를 써서 넣고싶은 변수나 표현식을 넣으면됨 
예시 : print(f"a={3+4} \n b={b}")




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



문자열 내장 메서드 

* 문법은 문자열변수명.메서드() 형식이다. 편의상 문자열 변수명을 str로...  

1. str.strip([char]

효과 : 문자열의 양쪽 끝에 있는 공백, 줄바꿈, 지정문자 등을 제거함
상황 : 사용자가 입력한 문자열의 앞뒤 공백 또는 마침표 등을 제거할 때, 파일을 읽어와서 각 줄의 줄바꿈 문자를 제거할 때  
문법 : 변수명 = 문자열.strip([char]) 
    지정 문자를 설정하지 않을때는, 공백이 제거됨 (strip())
    지정 문자는 strip("+") 처럼 따음표 안에 써야함 
    * 생략이 가능한 경우의 매개변수일때는 [ ~ ] 라고 공식적으로 표현함
리턴값 : 문자열에서만 실행되는 함수. 리스트나, 튜플에 strip 함수쓰면 오류남 (입력도 출력도 문자열만)

예시 
str = "   hello, world   "
str = str.strip()  # 출력: "hello, world"

str2 = "!!%!hello, world!!!%"
str2 = str2.strip('%!')  # 출력: "hello, world"       







2. str.split([sep [, maxsplit]])

목적 : 문자열을 지정 구분자에 따라 여러 부분으로 나눔 
상황 : 쉼표, 공백, 줄바꿈 문자, 탭 문자 등을 기준으로 문자열을 분리하고 싶을때 사용한다. 
효과 : 사용자가 여러 값을 한번에 입력했을 때, 입력 값을 분리할 수 있음

문법 : 변수명 = str.split([sep [,maxsplit]])
    ① sep : 구분자를 지정하는 문자열, 생략하면 공백을 기준으로 문자열 분리
    ② maxsplit : 분리할 최대 횟수를 지정함. 생략하면 가능한 많이 분리됨 
입력값 : only 문자열
리턴값 : always 리스트 

예시 
text = "apple banana cherry date elderberry"
words = text.split(' ', 2)

print(words)  # 출력: ['apple', 'banana', 'cherry date elderberry']

text = "Hello, my name is John Doe"
words = text.split()

print(words)  # 출력: ['Hello,', 'my', 'name', 'is', 'John', 'Doe']  




3. 구분자.join(iterable)


목적 : 괄호 안에 오는 iterable의 요소를 구분자로 연결해 하나의 문자열로 반환
상황 : iterable 객체를 결합해 문자열로 변환할때, 여러 문자열을 하나의 문자열로 만들때
효과 : 문자열 + 결합과 같은 역할. 여러 문자열을 구분자를 통해 결합할 때 편리함. 

문법 : 변수명 = sep.join(iterable)
    * sep : 각 요소를 결합할 때 사용할 문자열 구분자 
입력값 : iterable 객체(리스트, 튜플, 문자열 등) - 아래 개념정리 챕터에 상세하게 작성해둠 
리턴값 : 문자열

예시
words = ["Hello", "World", "Python"]
result = " ".join(words)
print(result)
# 출력: "Hello World Python"


문자열 합치기 + 연산과 같은 효과
words = ["Hello", "World", "Python"]
result = ""
for word in words:
    result += word + " "
result = result.rstrip()  # 마지막에 추가된 공백 제거
print(result)
# 출력: "Hello World Python"          





4. 문자열 대소문자 메서드


str.isupper() : 대문자 식별 메서드
str.islower() : 소문자 식별 메서드

str.upper() : 대문자로 바꾸는 메서드
str.lower() : 소문자로 바꾸는 메서드

str.swapcase()
 : 소문자는 대문자로, 대문자는 소문자로 바꾸는 메서드

str.capitalize() : 문자열 첫 문자만 대문자, 나머지 모두 소문자로 변환

str.title() : 단어 첫 문자만 대문자, 나머지는 모두 소문자로 변환



5. str.replace(old, new[, count])

목적 : 문자열을 지정 구분자에 따라 여러 부분으로 나눔 
상황 : 쉼표, 공백, 줄바꿈 문자, 탭 문자 등을 기준으로 문자열을 분리하고 싶을때 사용한다. 
효과 : 사용자가 여러 값을 한번에 입력했을 때, 입력 값을 분리할 수 있음

문법 : 변수명 = str.replace(old, new[, count])
    ① old (필수): 바꿀려는 리스트가 가지고 있는 원래의 문자열
    ② new (필수): 교체할 새로운 문자열
     count (선택): old를 new로 교체할 횟수. 생략시, 교체 가능한 만큼 전부 바꿈 
입력값 : 문자열
리턴값 : 함수에 의해 일부 교체된 새 문자열, 원래 문자열은 변경안됨

예시 
text = "AbcAbcAAbc"

new_text = text.replace("A", "a")
#출력값은 "abcabcaabc" 

new_text2 = text.replace("A", "a", 2)
#출력값은 "abcabcAAbc" 



6. 포맷 지정자

문자열에서 변수를 출력할때, 기능을 추가할 수 가 있다. 

아래 캡처사진은 formating에 적용했을때지만, f-string에서도 물론 활용할 수 있다. 



예시 
print(f'평균: {avg_score : .2f}')  # 출력: 평균: 85.74
print(f'평균: {avg_score : , .2f}')  # 출력: 평균: 85,736.12
print(f'평균: {avg_score : 10 .2f}')  # 출력: 평균:      85.74
print(f'평균: {avg_score : .2%}')  # 출력: 평균: 85.74%

#정렬 (< 왼쪽) (> 오른쪽) (^ 가운데)
print(f'Name: {name : <10} Age: 30')  # 출력: Name: John       Age: 30
print(f'Name: {name : >10} Age: 30')  # 출력: Name:       John Age: 30
print(f'Name: {name : ^10} Age: 30')  # 출력: Name:   John    Age: 30

name = 'hong'
print(f'Name: {name:-^10}') #출력: Name: ---hong---
# print(f'Name: {name:^-10}') #오류남

1. 콜론 : 
f-string에서 변수뒤에 포매팅 형식을 입력할려면,  콜론으로 시작해야한다. 

콜론 뒤에 오는 부분은 해당 변수의 형식을 지정한다. 

그래서, 변수에 포매팅 형식을 활용할려면 꼭 콜론을 써야함


2. 쉼표 ,  

숫자변수를 출력할때, "1000단위 자리수 때마다 콤마 찍겠다"는 의미 


3. 소수점 짜르기 .2f 

"소수점 2자리 까지 표현하겠다"를 의미

.1f 이면 소수점 1자리까지


4. 확률 표현 .2% 

"숫자를 백분율로 표시하고 마지막에 %를 입력하겠다"를 의미

변수에 0.32432 값이 들어있을때, 32.43%로 출력됨 


5. 정렬 < > ^ 

{name : <10} 하면, 10자리 칸을 주고 왼쪽 정렬을 시키는 것 

{name : >7} 하면, 7자리 칸을 주고 오른쪽 정렬을 시키는 것 

{name : ^15} 하면, 15자리 칸을 주고 중앙 정렬을 시키는 것 


정렬을 시킬때 빈 공간은 공백(기본값)으로 처리를 하지만, 다른 기호를 넣을 수도 있다. 

{name:-^10} : 정렬선언을 하기 전에, 왼쪽에 기호를 넣어야함 (출력: ---hong---)

{name:^-10} : 정렬선언 한 뒤에, 기호를 넣으면 오류남 




댓글

이 블로그의 인기 게시물

[KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

KT 에이블스쿨 : 핀테크 아이디어 공모전

KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계