• Q&A
  • 회원가입
  • 로그인

[basic] Python - String (문자열) ★ ※ 색인번호 (= 인덱스) 개념.

목차

  1. 문자열 기본형태
  2. 변수에 문자열 담기
  3. 여러 줄 문자열
  4. 문자열은 배열 일종
  5. 문자열 자르기 (= 슬라이싱) ※ 색인번호
  6. 문자열 음수색인
  7. 문자열길이
  8. 문자열 메서드
  9. 문자열 포함 확인
  10. 문자열 연결
  11. 문자열과 숫자 결합 + 문자열 치환 (= 문자열 포맷)
  12. String - 회피문자 (Escape Character)
  13. String - 문자열 메서드 종류 

 

1.

문자열 기본 형태

 

1. 문자열은 큰따옴표(")나 작은따옴표(')로 감싸야 함.
2. print() 명령어로 출력 가능.

(예제)

print("Homzzang.com")

print('Homzzang.com') 

 

 

2.

변수에 문자열 담기

변수명 뒤에 등호(=) 붙이고 문자열 기재.

 

hz = "Homzzang.com"

print(hz) 

 

 

3.

여러 줄 문자열

3개의 따옴표를 사용해 여러 줄 문자열을 변수에 할당 가능.

 

(예1) - 큰따옴표 3개 경우

hz = """Homzzang.com

홈짱닷컴 그누보드 및 서버 강의

코딩 배우러 놀러오세요"""

print(hz) 

 

(예2) - 작은따옴표 3개 경우

hz = '''Homzzang.com

홈짱닷컴 그누보드 및 서버 강의

코딩 배우러 놀러오세요'''

print(hz)

 

※ 줄바꿈은 코드에서의 줄바꿈과 동일. (<pre> 태그 적용 효과와 비슷) 

 

4.

문자열은 배열 일종

1.

다른 많은 인기 프로그래밍 언어와 마찬가지로,

Python의 문자열은 유니 코드 문자를 나타내는 Byte 배열임.

※ 배열 색인번호는 0부터 시작.

 


2. 그러나,

Python에는 charactor(단일 문자) 데이터 타입이 없으며,

charactor(단일 문자)는 길이가 1인 string(문자열)뿐임.

 


3.

문자열은 배열이므로, [index] 기호 사용해 문자열 각 요소에 접근. 

※ 엄밀히는, 문자열은 배열이 아니고 반복자그릇 (iterable)임.

※ iterable은 각 구성요소인 반복자 (iterator)에 순차 접근 가능.

 

string[index]

※ index는 왼쪽부터 시작 시 0부터 시작. (예) 0, 1, 2, ...

※ index는 오른족부터 시작 시, -1부터 시작. (예) ...-3,-2,-1

※ 공백이나 특수문자 역시 각각 1개의 색인번호 차지.

 

[예제] 

hz = "Homzzang.com"

print(hz[2])

 

결과값: m

 

5.

문자열 자르기 (= 슬라이싱)

 

string[start:stop:step]

 


 

start : 선택. 시작 색인번호. (기본값: 0)

stop : 필수. 종료 색인번호. (포함 X)

step : 선택. 색인번호 증가폭. (기본값: 1) 

 

★ step이 음수인 경우, 오른쪽에서 왼쪽으로 진행.

※ string(5:0:-1) : 5부터 0 앞까지 -1씩 감소.

string[::-1] :  문자 순서 뒤집기.

 

cf. slice() 함수 : 객체 자르기 (= 객체의 일부분만 선택.)


[예제]

 

hz = "홈짱닷컴 Homzzang.com"

print(hz[1:3]

 

결과값: 짱닷

PS. hz[1:10:2] 형태 경우, 1부터 10앞까지 2칸 간격으로 출력.

 

6.

문자열 음수 색인번호

음수 색인번호 경우, 문자열 끝(-1)부터 시작.

 

hz = "홈짱닷컴 Homzzang.com"

print(hz[-9:-4])

 

반환값: zzang


PS. 문자열 끝까지 출력시키려면 끝 색인번호 입력 안 하면 됨.

 

hz = "홈짱닷컴 Homzzang.com"

print(hz[-3:])

 

반환값: com

 

7.

문자열 길이

len() 함수 - 문자열 길이 반환. ※ 주의: len(str) 형태로 사용.

 

hz = "홈짱닷컴 Homzzang.com"

print(len(hz)

 

반환값: 17 

※ 주의: len()은 함수라 아래 메서드들과 사용법이 다름.

 

8.

내장된 문자열 메서드

strip() 메서드 - 문자열 시작 또는 끝에서 공백 제거. 

 

hz = " 홈짱닷컴 Homzzang.com "

print(hz.strip())

 

반환값: 홈짱닷컴 Homzzang.com


lower() 메서드 - 소문자로 된 문자열 반환.

 

hz = "홈짱닷컴 Homzzang.com"

print(hz.lower())

 

 

반환값: 홈짱닷컴 homzzang.com


upper() 메서드 - 대문자로 된 문자열 반환.

 

hz = "홈짱닷컴 Homzzang.com"

print(hz.upper())

 

 

반환값: 홈짱닷컴 HOMZZANG.COM


replace() 메서드 - 특정 문자열을 지정 문자열로 변환.

 

hz = "홈짱닷컴"

print(hz.replace("홈짱닷컴","Homzzang.com"))

 

반환값: Homzzang.com


split() 메서드 - 지정한 구분자 기준으로 문자열 반할 후 배열로 반환.

 

hz = "홈짱닷컴 Homzzang.com"

print(hz.split(" ")) # 공백 기준해 분할.

 

반환값: ['홈짱닷컴', 'Homzzang.com'] 

문자열 메서드 더 보기


9.

문자열 포함 체크

in (또는 not in) 키워드 - 문자열 포함 체크할 때 사용.

 

hz = "홈짱닷컴 Homzzang.com"

x = "홈짱" in hz

print(x) # True

 

hz = "홈짱닷컴 Homzzang.com"

x = "홈짱" not in hz

print(x) # False


 

10.

문자열끼리 연결

+ 연산자 - 문자열 연결에 사용.

 

a = "홈짱닷컴"

b = " Homzzang.com"

hz = a + b

print(hz)

 

반환값: 홈짱닷컴 Homzzang.com


PS. 문자열 사이에 공백 추가 방법.

 

a = "홈짱닷컴"

b = "Homzzang.com"

hz = a + " " + b

print(hz)

 

반환값: 홈짱닷컴 Homzzang.com

 

11.

문자열과 숫자 결합 + 문자열 치환 (= 문자열 포맷)

1. 일반적으로는 문자열과 숫자 불가함. 변수편 참고.

 

num = 2012

txt = "홈짱닷컴 Homzzang.com"

hz = txt + " " + num 

print(hz) 

 

반환값: 에러 발생.


2. format() 메서드 사용해, 문자열과 숫자 결합 가능.

※ format() 메서드는 인수를 형 변환 후, 문자열 안 {} 위치에 반환.

 

num = 2012

txt = "홈짱닷컴 Homzzang.com"

hz = txt + " {}

print(hz.format(num))

 

반환값: 홈짱닷컴 Homzzang.com 2012

 


3. format() 메서드는 무제한의 인수 가능하며, 순서대로 {}에 배치.

 

year = 2012

month = 5

txt = "홈짱닷컴 Homzzang.com"

hz = txt + " Since {}{}월 " 

print(hz.format(year, month))

 


4. format() 메서드는 {} 안에 색인번호 지정해 직접 위치 지정 가능.

year = 2012

day = 12

txt = "홈짱닷컴 Homzzang.com"

hz = txt + " Since May {1}th, {0}

print(hz.format(year, day))

 

반환값: 홈짱닷컴 Homzzang.com Since May 12th, 2012


5. Dictionary의 value값으로 문자열 대체.

 

dic = {"사과": "apple", "배": "pear"}

print("사과는 영어로 %s" %(dic["사과"]))

 

결과값: 사과는 영어로 apple 

 

12.

회피문자 (Escape Character)

 

\ (백슬래시) - 구문 상 "입력 불가 문자"를 입력할 때 사용.

※ 종류 : \" , \ ' , \\ , \n , \r , \t , \b , \f , \ooo , \xhh

 


1. \"  :  큰따옴표 안에 큰따옴표 입력.

 

hz = "\"홈짱닷컴\" Homzzang.com"

print(hz) 

 

반환값: "홈짱닷컴" Homzzang.com 

 


2. '  :  작은따옴표 안에 작은따옴표 입력.

 

hz = ''홈짱닷컴' Homzzang.com'

print(hz)

 

반환값: '홈짱닷컴' Homzzang.com 


3. \\   :   \ (역슬래시) 입력.

 

txt = '\\ (백슬래시)는 입력 불가 회피할 때 사용.'

print(txt)

 

반환값: \ (백슬래시)는 입력 불가 회피할 때 사용. 


4. \n  :  개행 (= 문자열 입력 라인 변경).

 

hz = "홈짱닷컴 \nHomzzang.com"

print(hz)

 

반환값:

홈짱닷컴

Homzzang.com


5. \r  :  캐리지 리턴 (Carrage Return : 새 줄 시작)

 

hz = "홈짱닷컴 \rHomzzang.com"

print(hz)

 

반환값: Homzzang.com

 


6. \t  :  탭 (Tab) 키 누른 만큼 간격 띄우기.

 

hz = "홈짱닷컴 \tHomzzang.com"

print(hz)

 

반환값: 홈짱닷컴     Homzzang.com


7. \b  :  백스페이스 (Backspace) 키 누른 효과.

 

hz = "홈짱닷컴 \bHomzzang.com"

print(hz)

 

반환값: 홈짱닷컴Homzzang.com


8. \f  :  폼 피드 (Form Feed)

 

예제 준비 중.

 


9. \ooo  :  (역슬리시 + 3자리 정수) = 8진수로 표현한 알파벳.  

 

hz = "\110\157\155\172\172\141\156\147\56\143\157\155"

print(hz)

 

반환값: Homzzang.com


10. \xhh  :  (역슬리시 + x + 16진수) = 16진수로 표현한 알파벳.  


hz = "\x48\x6F\x6D\x7A\x7A\x61\x6E\x67\x2E\x63\x6F\x6D"

print(hz)

 

반환값: Homzzang.com

 

13.

내장된 문자열 메서드 종류

모든 문자열 메서드는 새 값을 반환. (※ 원래 문자열 변경 X)

 

capitalize()

첫 번째 문자를 대문자로 변환.

 

casefold()

문자열을 소문자로 변환.

 

center()

중심 문자열을 반환.

 

count() ★★

지정 값이 문자열에 포함된 횟수 반환.

 

encode()

문자열의 인코딩 된 버전을 반환.

 

endswith()

문자열이 지정된 값으로 끝나면 true 반환.

 

expandtabs()

문자열의 탭 크기를 설정.

 

find() ★★

문자열에서 지정 값 검색 후 그 색인번호를 반환.

※ index()와 유사하나, 다른 점은 없는 값 경우 -1 반환.

 

format() ★★

문자열에 지정된 값을 형식화.

 

format_map()

문자열에 지정된 값을 형식화.

 

index() ★★

문자열에서 지정 값을 검색 후, 그 색인번호를 반환.

※ find() 함수와 유사하나, 다른 점은 없는 값 경우 에러 발생.

 

isalnum() ★

문자열의 모든 문자가 영숫자이면 True 반환.

 

isalpha() ★

문자열의 모든 문자가 알파벳이면 True 반환.

 

isdecimal()

문자열의 모든 문자가 10 진수이면 True 반환.

 

isdigit()

문자열의 모든 문자가 숫자이면 True 반환.

 

isidentifier()

문자열이 식별자이면 True 반환.

 

islower()

문자열의 모든 문자가 소문자이면 True 반환.

※ isupper()의 반대.

 

isnumeric()

문자열의 모든 문자가 숫자이면 True 반환.

 

isprintable()

문자열의 모든 문자가 인쇄 가능한 경우 True 반환.

 

isspace()

문자열의 모든 문자가 공백이면 True 반환.

 

istitle()

문자열이 제목의 규칙을 따르는 경우 True 반환.

 

isupper()

문자열의 모든 문자가 대문자이면 True 반환.

※ islower()의 반대.

 

join() ★★

지정 문자열 끝에 반복 가능 요소를 결합.
※ split()의 반대.

 

ljust()

문자열의 왼쪽 정렬 버전을 반환.

 

lower()

문자열을 소문자로 변환.

※ upper()의 반대.

 

lstrip() ★

문자열의 왼쪽 공백 제거된 버전 반환.

 

maketrans()

번역에 사용할 번역 테이블을 반환.

 

partition()

문자열이 세 부분으로 나뉘어 진 튜플을 반환.

 

replace() ★★

지정된 값이 지정된 값으로 대체되는 문자열을 반환.

 

rfind() ★

문자열에서 지정된 값을 검색하고 발견된 마지막 위치 반환.

 

rindex()

문자열에서 지정된 값을 검색하고 발견된 마지막 위치 반환.

 

rjust()

오른쪽 정렬된 문자열 버전 반환.

 

rpartition()

문자열이 세 부분으로 나뉘어 진 튜플을 반환.

 

rsplit()

지정된 구분 기호에서 문자열 분할하고 목록 반환.

 

rstrip() ★

문자열의 오른쪽 공백 제거된 버전 반환.

 

split() ★★

지정된 구분 기호에서 문자열을 분할하고 목록을 반환. 

※ join()의 반대.

 

splitlines()

줄 바꿈시 문자열을 분할하고 목록을 반환.

 

startswith()

문자열이 지정된 값으로 시작하면 true 반환.

 

strip() ★

문자열의 트리밍 된 버전을 반환.

 

swapcase()

대소문자를 교환하고 소문자는 대문자가되고 그 반대도 마찬가지.

 

title() ★

각 단어의 첫 문자를 대문자로 변환.

 

translate()

번역된 문자열을 반환.

 

upper()

문자열을 대문자로 변환.

※ lower()의 반대.

 

zfill()

시작 부분에 지정된 수의 0 값으로 문자열을 채움. 

 


PS.

 

1. 

Python Shell에서 문자열 입력 후, 

. (점) 찍으면 선택 가능한 메서드 리스트 뜸.

 

2.

dir(str) 명령어 : 문자열 메서드 리스트 확인.

※ __method_name__  형태의 메서드는 'Magic Mathod'라 함.

 

3.

특정 문자열 메서드 사용법 확인.

(예): title() 메서드 사용법 확인

help(str.title)

 

 

 

PS.

문자열 반복

* (곱셈 연산자) 이용.

 

a = "H"

print(a * 5)

 

결과값: HHHHH


오늘도 즐겁게 열심히 .....

찾아주셔서 감사합니다. Since 2012