[Python기초] 문자열(String)

MINJEE·2023년 8월 2일

SMHRD_1_Python기초

목록 보기
2/7
post-thumbnail

1. 이스케이프(Escape) 문자

이스케이프 문자의미
\n개행, 줄바꿈
\t수평 탭
\\ 문자"\"
\'작은 따옴표(')
\"큰 따옴표(")

1-1. ' 또는 " 문자 표현하는 방법

  • 문자열 전체를 묶는 따옴표와 문자열 안에 사용하는 따옴표를 ' 와 " 로 서로 다르게 사용
    • 문자열 안에 작은따옴표(')를 표시하고 싶다면, 문자열 전체를 큰따옴표(")로 사용하고, 안에 작은따옴표(') 사용
  • 문자열 전체를 묶는 따옴표와 문자열 안에 사용하는 따옴표를 같게 사용하려면 문자열 안의 따옴표 앞에 \를 표시
    • 문자열 전체를 작은따옴표(')로 묶었을 때, 문자열 안에 작은따옴표(')를 표시하고 싶다면 \' 로 사용
	str1 = "she's gone"
    str2 = 'she\'s gone'
  • str1과 str2의 출력 결과는 동일



2. 문자열 인덱싱, 슬라이싱

2-1. 인덱싱(Indexing)

  • 인덱싱 = 가리킨다
  • 인덱스는 왼쪽부터 0으로 시작
  • 오른쪽부터 인덱싱은 -1로 시작
  • 인덱싱 방법 : 변수명[인덱스]
str3 = "안녕하세요. 잘 부탁드립니다^^*"
문자.^^*
인덱스01234567891011121314151617
인덱스-18-1716-15-14-13-12-11-10-9-8-7-6-5-4-3-2-1

2-2. 슬라이싱(Slicing)

  • 슬라이싱 = 잘라낸다
  • 슬라이싱 방법 : 변수명[시작값:끝값:오프셋]
    • 문자열의 시작값 인덱스부터 끝값-1 인덱스까지 오프셋 간격으로 출력
    • 주의 : 끝값 포함 안함!!
    • 오프셋 생략 시, 기본값 1
    • 변수명[:] 변수를 처음부터 끝까지 모두 출력
    • 변수명[:5] 변수를 처음부터 4까지 출력
    • 변수명[3:] 변수를 3부터 끝까지 출력
    • 변수명[::2] 변수를 처음부터 끝까지 2간격으로 출력
  • ex)
  str4 = "2023년 8월 2일의 날씨는 맑음입니다."
  print("날짜 : ", str4[:11])  # str4을 0부터 10까지 1 간격으로 출력
  print("날씨 : ", str4[-6:-4]) # str4의 -6부터 -5까지 1간격으로 출력

출력결과 :

2023년 8월 2일
맑음



3. 문자열 포매팅(Formatting)

3-1. %문자 이용하기

%서식의미
%s문자열
%c문자 1개
%d정수
%f실수
%%문자 "%"

예시

str5 = "오늘은 %d월 %d일 입니다."%(8,2)
str6 = "나는 %s를 좋아한다."%('사과')
age = 26
str7 = "내 나이는 %d살 입니다."%(age)  # 변수에 대입하여 사용 가능
print(str5)
print(str6)
print(str7)

출력결과 :

오늘은 8월 2일 입니다.
나는 사과를 좋아한다.
내 나이는 26살 입니다.


3-2. format 함수 사용하기

문자열 안에 {}를 사용하고, format함수를 이용하여 {}안에 들어갈 내용 포매팅

  • 형식 : "문자{}열".format(변수)
month = 8
day = 2
str8 = "오늘은 {}월 {}일 입니다.".format(month, day)
print(str8)

출력 결과 :

오늘은 8월 2일 입니다.


3-3. f-string 사용하기

문자열 앞에 f를 붙이고, 문자열 안에 {변수}로 포매팅

  • 형식 : f"문{변수}자열"
month = 8
day = 2
str9 = f"오늘은 {month}{day}일 입니다."
print(str9)

출력 결과 :

오늘은 8월 2일 입니다.



4. 문자열 관련 함수

count(문자) : 문자열에 포함된 해당 문자의 개수
find(문자) : 문자열 내의 해당 문자의 첫번째 인덱스
upper() : 소문자를 대문자로 변경
lower() : 대문자를 소문자로 변경
calpitalize() : 첫글자는 대문자로, 나머지는 소문자로 변경
strip() : 양쪽 공백 제거 (중간에 있는 공백은 제거 안함!)
replace(기존문자, 새문자) : 문자열 내의 기존문자를 새문자로 변경
split(문자) : 해당 문자를 기준으로 문자열 분리
endswith(문자) : 해당 문자로 끝나면 True, 아니면 False
startswith(문자) : 해당 문자로 시작하면 True, 아니면 False
'구분자'.join(문자열 리스트) : 문자열들을 구분자로 연결

str10 = "  My name is PiPi. I like Python.      "
str10.count('i')  # i의 개수 = 4
str10.find('i')  # 첫번째 i의 위치(인덱스) = 10
str10.upper()  # 대문자로 = "  MY NAME IS PIPI. I LIKE PYTHON.      "
str10.lower()  # 소문자로 = "  my name is pipi. i like python.      "
str10.strip()  # 양쪽 공백 제거 = "My name is PiPi. I like Python."

str11 = "hello"
str11.replace('ello','i')  # ello를 i로 변경 = "hi"
str11.endswith('o')  # 마지막 문자가 o인지 여부 = True
str11.startswith('o')  # 첫 문자가 o인지 여부 = False

'*'.join(['apple','banana','strawberry']) # "apple*banana*strawberry"
profile
개발, 분석 배운 내용 정리하기!

0개의 댓글