Python/Python

[Python] 05. 파이썬 문자열/리스트 관련 메소드, 함수

구름솜:D 2023. 11. 24. 17:34
728x90

문자열 관련 메소드

1) 대소치환(upper(),lower(),title())

문자열.upper() : 문자열을 대문자로 치환

문자열.lower() : 문자열을 소문자로 치환

문자열.title() : 문자열 앞글자만 대문자로 치환

a1 = 'abc de12! cAA'
a1.upper()   #ABC DE12! CAA
a1.lower()   #abc de12! caa
a1.title()   #Abc De12! Caa

 

2) 공백제거(strip(),lstrip(),rstrip())

문자열.strip() : 문자열 양옆 공백제거
문자열.lstrip() : 문자열 왼쪽 공백제거
문자열.rstrip() : 문자열 오른쪽 공백제거

' dfc   '.strip()      #dfc
' dfc   '.lstrip()     #dfc  
' dfc   '.rstrip()     # dfc

 

3) 문자열의 구성 확인하기(is___())

문자열.isalnum() : 문자열이 알파벳 문자와 숫자로 이루어져 있는지 확인
문자열.isalpha() : 문자열이 모두 알파벳 문자로 이루어져 있는지 확인
문자열.isdentifier() : 문자열이 식별자로 사용될수 있는지 확인
문자열.isdecimal() : 문자열이 모두 10진수인지 확인
문자열.isdigit() : 문자열이 모두 숫자로 이루어져 있는지 확인
문자열.isspace() : 문자열이 공백으로만 구성되어 있는지 확인
문자열.islower() : 문자열이 소문자로만 구성되어 있는지 확인
문자열.isupper() : 문자열이 대문자로만 구성되어 있는지 확인

문자열.isascii() : 문자열이 ASCII 문자로 이루어져 있는지 확인

"hello".islower()  #True
"Hello".islower()  #False

 

4) 문자열의 시작/끝 확인하기(startswith(),endswith())

문자열.startswith('특정문자열') : 문자열에서 특정 문자열로 시작하는지 여부를 확인

문자열.endswith('특정문자열') :  문자열에서 특정 문자열로 끝나는지 여부를 확인

a1 = 'abc de12! cAA'
a1.startswith('A')   #False
a1.startswith('a')   #True
a1.endswith('a')     #False   
a1.endswith('A')     #True

 

5) 문자열 찾기(find(),rfind())

문자열.find('특정문자열') : 왼쪽부터 특정 문자열을 찾기 시작해서 처음 등장하는 위치를 리턴

문자열.rfind('특정문자열') : 오른쪽부터 특정 문자열을 찾기 시작해서 처음 등장하는 위치를 리턴

a1 = 'abc de12! cAA'
a1.find('!')   #8
a1.rfind('!')  #8
a1.find('?')   #-1(값이 존재하지 않는 경우 -1 리턴)

 

6) 문자열 확인하기(in/ not in 연산자)

'특정문자열' in/not in '문자열' : 문자열안에 특정문자열이 있는지/없는지 확인

str1 = '안녕하세요'
'안녕'in str1       #True 
'잘가'in str1       #False
'잘가'not in str1   #True

 

7) 문자열 자르기(split())

문자열.split() : 문자열을 특정한문자로 자를 때 사용

- split()의 괄호에 아무것도 입력하지 않으면 공백(띄어쓰기)를 기본값으로 가짐

- 반환값(실행결과는) 무조건 리스트(list)로 출력

a1 = 'abc de12! cAA'
a1.split(' ')            #['abc', 'de12!', 'cAA']
a1.split(' ')[0]         #abc
'a#b#c#d#e'.split('#')   #['a', 'b', 'c', 'd', 'e']
'a#b#c#d#e'.split('#',2) #['a', 'b', 'c#d#e'](split를 선언한 횟수만큼만 실행)

 

8) 문자열 치환/삭제(replace())

문자열.replace('특정문자열','변경할문자열') : 문자열안의 문자열을 특정 문자열로 변경할 때 사용

- 변경할 문자열에 아무것도 입력하지 않으면 특정문자열 삭제

a1 = 'abc de12! cAA'
a1.replace('a','A')     #Abc de12! cAA ('a'를 'A'로 치환)
a1.replace('a','')      #bc de12! cAA  ('a'를 삭제)

'a#b#c#d#'.replace('#', '')      #abcd
'a#b#c#d#'.replace('#', '', 2)   #abc#d# (replace를 선언한 횟수만큼 실행)

 

9) 문자열 포함횟수확인(count())

문자열.count('찾는문자열') : 찾는 문자열의 갯수를 문자열에서 카운트

a1 = 'abc de12! cAA'
a1.count('A')      #2
a1.count('1')      #1
a1.count(1)        #error 발생(문자열형태로 전달 필요)

 

10) 문자열 삽입(zfill(),rjust(),ljust(),center())

문자열.zfill(문자열길이(정수)) : 지정한 문자열의 길이가 될 때까지 문자열의 왼쪽을 0으로 채움

문자열.rjust(문자열길이(정수),'삽입할문자열') : 지정한 문자열의 길이가 될 때까지 문자열의 왼쪽을 특정문자열로 채움

문자열.ljust(문자열길이(정수),'삽입할문자열') : 지정한 문자열의 길이가 될 때까지 문자열의 오른쪽을 특정문자열로 채움

문자열.center(문자열길이(정수),'삽입할문자열') : 지정한 문자열의 길이가 될 때까지 문자열의 양쪽을 특정문자열로 채움  

'abc'.zfill(10)          #0000000abc 
'abc'.rjust(10, ' ')     #       abc
'abc'.rjust(10, '*')     #*******abc 
'abc'.ljust(10, '*')     #abc*******
'abc'.center(10, '*')    #***abc****

 

11) 문자열 합치기(join())

'구분자'.join(리스트) : 리스트에 있는 요소가 문자열 일 때, 리스트의 요소를 하나씩 합쳐서 하나의 문자열로 반환

- 리스트 요소의 자료형이 문자열이 아닌 경우 에러 발생(result3)

- 리스트 요소의 자료형이 문자열이 아닌 경우 형변환을 통해 해결가능(result4)

strlist1 = ['a','b','c']
strlist2 = ['1','2','3']
intlist1 = [1,2,3]

result1 = ' '.join(strlist1)  #a b c
result2 = ' '.join(strlist2)  #1 2 3
result3 = ' '.join(intlist1)  #TypeError: sequence item 0: expected str instance, int found
result4 = ' '.join(str(i) for i in intlist1)  #1 2 3

 

 

리스트 관련 메소드

1) 리스트에 요소 추가하기(append(), insert(), extend())

리스트.append(추가할 요소) : 리스트에 요소 하나씩 추가

리스트.insert(추가할 위치, 추가할 요소) : 원소를 추가하고 싶은 위치를 지정하여 요소 추가

리스트.extend(리스트로 추가할 요소 전달) : 한 번에 여러 요소를 추가할 때 사용(리스트형태로만 추가가능)

list1= [1,2,3]
list1.append(4)         #[1, 2, 3, 4]
list1.insert(0,10)      #[10, 1, 2, 3, 4]
list1.extend([5,6,7])   #[10, 1, 2, 3, 4, 5, 6, 7]

 

2) 리스트에 요소 제거하기(del, pop(), remove(), clear())

del 리스트[인덱스], 리스트.pop(인덱스) : 인덱스로 특정 값을 제거(del은 범위지정 가능) - 인덱스를 통해서 제거(괄호안에가 인덱스)

리스트.remove() : 첫 번째 원소부터 탐색하여 가장 먼저 발견되는 값을 제거 - 값을 찾아서 제거(괄호안에가 값)

리스트.clear() :  모두 제거

list1= [0,1,2,3,4,5]
del list1[1]      #[0, 2, 3, 4, 5]

list1= [0,1,2,3,4,5]
del list1[3:5]    #[0, 1, 2, 5]

list1= [0,1,2,3,4,5]
list1.pop(2)      #[0, 1, 3, 4, 5]

list1= [0,1,2,3,4,5]
list1.pop()       #[0, 1, 2, 3, 4]

list1= [0,1,0,1,0,2]
list1.remove(2)   #[0, 1, 0, 1, 0]

list1= [1,2,1,2]
list1.remove(2)   #[1, 1, 2] (처음등장하는 위치만 제거)

list1= [1,2,1,2]
list1.clear()     #[]

 

3) 리스트에 요소 확인하기(in/ not in 연산자)

요소 in/ not in 리스트 : 리스트안에 요소가 있는지/없는지 확인

list1 = ['가','나','다']
'가' in list1      #True 
'하' in list1      #False
'하' not in list1  #True

 

4) 리스트 정렬(sort())

리스트.sort() : 오름차순 순서대로 정렬

리스트.sort(reverse=True) : 내림차순 순서대로 정렬

list1 = [3,5,6,2,4,1]
list1.sort()                #[1, 2, 3, 4, 5, 6]
list1.sort(reverse=True)    #[6, 5, 4, 3, 2, 1]

 

5) 리스트 안의 특정 원소 세기(count())

리스트.count(요소) : 리스트안에 있는 요소의 개수를 카운트

list1 = ['가','나','다','나','라']
list1.count('나')    #2