본문 바로가기
SK 행복성장캠퍼스/Python 기초

0901_2일차_Python08_문자열_함수

by NickNuma 2020. 9. 4.

문자열 설명 2번째이자 문자열 함수에 대한 설명입니다.


먼저 문자열에서 사용가능한 함수에 대한 설명입니다.
문자열에서 어떤 함수를 사용할 수 있는지 알고싶다면 print(dir(str))으로 알아볼 수 있고
각 함수에 대한 설명은 help(데이터형.함수명)으로 알아볼 수 있습니다.

"""
    집합형 자료형
    1) 문자열
        a. 문자열 생성 방법
        
        b. 문자열 제공 함수    ==> dir(str) 확인 가능
            * 함수 (function)
            ==> 데이터를 이용해서 특별한 기능(동작) 처리할 때 사용
            * 특정 객체(데이터)의 함수 정보보기
               dir(데이터) ==> 데이터가 가지고 있는 함수 정보 반환
               #함수 사용 설명 보기
               help(str.count)

        c. 인덱싱 및 슬라이싱
        d. 문자열 특징

"""

 


문자열 데이터에서 사용할 수 있는 함수는 이렇습니다. ( print(dir(str))으로 볼 수 있음 )
그리고 str에 존재하는 함수는 str.함수명()으로 사용 가능하며 str가 아닌 __builtins__에 존재하는 함수는 함수명(문자열/변수명)으로 사용 가능합니다.   ( s.upper(), len(s) )

"""
str 데이터형에 존재하는 .없는 형태로 사용가능한 함수들 ==> len(" ")
   '__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
   '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', 
   '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', 
   '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 

str 데이터형에 존재하는 .있는 형태로 사용가능한 함수들 ==> " ".count(' ')
   'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 
   'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 
   'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 
   'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'
"""

 


시작 전에, 함수는 데이터형(클래스)이 갖고 있는 함수와 __builtins__와 같은 외부 패키지에 존재하는 함수로 나뉩니다.
__builtins__와 같은 외부 패키지에 존재하는 함수는 .없이, 함수명()로 사용을 하고
데이터형(클래스) 내부에 존재하는 함수는 변수명.함수명()으로 사용합니다.

"""
   1) 함수형태
      가. .없이 사용하는 함수 ==> __builtins__에 있는 함수는 .없이 그냥 사용 
               print(dir(builtins)) 이용하여 함수명을 확인할 수 있다.
               len()    : 길이 반환
               id()     : 주소값 반환
               type()   : 타입 반환
               dir()    : 구성 요소 (함수,  ...) 반환
               print()  : 콘솔에 값 출력
               input()  : 표준 입력
               str(), int(), bool(), list(), dict(), tuple(), set()
               len(), id(), type(), print(), input(), dir()....    
      
      나. .와 함께 사용하는 함수  ==> __builtins__에 없는 함수
                s.a함수()   ==>   s안에 있는 a() 함수를 사용
                s위치에 올 수 있는 형태 => 데이터(값) 또는 값의 타입 = 값을 저장하는 변수가 일반적으로 자리함.
                
                문자열 ==> 클래스명 (str)
                정수   ==> 클래스명 (int)
                실수   ==> 클래스명 (float)
                논리   ==> 클래스명 (bool)....
                
                사용방법 :
                  변수명.함수명()
                
         
   2) 함수는 항상 클래스/패키지 안에 저장이 되어있다.   
      함수를 사용하려면 반드시 클래스 이름을 지정해야한다.
      클래스 이름.함수명()
      함수명(클래스 이름)
      
      함수명의 정보를 보기 위해서 dir(변수명), dir(클래스명)
      
"""

 


그럼... 문자열의 함수들을 사용해보도록 하겠습니다.

1. 문자열의 길이                                     len(변수명/문자열)
2. 특정 문자의 갯수                                 변수명/문자열.count('특정 문자')
3. 대문자로 변경                                     변수명/문자열.upper()
4. 소문자로 변경                                     변수명/문자열.lower()
5. 대<->소문자 변경                                변수명/문자열.swapcase()
6. 양쪽 공백 제거                                    변수명/문자열.strip()
7. 왼쪽 공백 제거                                    변수명/문자열.lstrip()
8. 오른쪽 공백 제거                                 변수명/문자열.rstrip()
9. 특정 문자 제거                                    변수명/문자열.strip('특정 문자')
10. 왼쪽 특정 문자 제거                            변수명/문자열.lstrip('특정 문자')
11. 오른쪽 특정 문자 제거                         변수명/문자열.rstrip('특정 문자')
12. 특정 문자 변경                                   변수명/문자열.replace('변경될 문자', '변경할 문자')
13. 특정 문자 시작 여부                            변수명/문자열.startswith('특정 문자')
14. 특정 문자 종료 여부                            변수명/문자열.endswith('특정 문자')
15. 문자로만 구성 여부                             변수명/문자열.isalpha()
16. 숫자로만 구성 여부                             변수명/문자열.isnumeric()
17. 영숫자로만 구성 여부                          변수명/문자열.isalnum()
18. 특정 문자 위치 반환                            변수명/문자열.find('특정 문자')
19. 특정 문자를 기준하여 재구분                 변수명/문자열.split('특정 문자')
20. 문자열로 된 리스트를 특정문자              "특정문자".join(문자열 리스트)
     를 이용하여 한 줄의 문자열로 묶어줌       

21. 멤버십 연산자로 문자 여부 확인 가능       '확인하려는 문자' in "문자열"

#1. 문자열 함수
s = "sEquENce"
print("1. 문자열 길이:", len(s))   # 8   len(변수명)
print("1. 문자열 길이:", len("abcdefg"))    # len("문자열")
result = len(s)
print("1. 문자열 길이:", result)   # 8
print("2. 특정 문자의 갯수:", s.count('e'))   # 변수 s에 저장된 문자 'e' 갯수를 카운트 변수명.count('문자')
print("3. 특정 문자의 갯수:", "elephant".count('e'))   # "문자열".count('문자')
print("4. 대문자로 변경:", s.upper())
print("5. 소문자로 변경:", s.lower())
print("6. swap 변경:", s.swapcase())  # 대문자 -> 소문자, 소문자 -> 대문자
print("7. 공백 제거:")
print("  Hello    ".strip())  # 양쪽 공백 제거
print("  Hello    ".lstrip())  # 왼쪽 공백 제거
print("  Hello    ".rstrip())  # 오른쪽 공백 제거

print("8. 특정 문자 제거:")
print("HHelHHloHH".strip('H'))  # 양쪽 'H' 제거     가운데 글자는 해당이 안 됨. 오?~?
print("HHelHHloHH".lstrip('H'))  # 왼쪽 'H' 제거
print("HHelHHloHH".rstrip('H'))  # 오른쪽 'H' 제거

print("9. 특정 문자 변경:", "Hello".replace("H", "A"))

print("10. 특정 문자 시작 여부:", "Hello".startswith("H"))
print("10. 특정 문자 시작 여부:", "Hello".startswith("X"))
print("10. 특정 문자 종료 여부:", "Hello".endswith("o"))   # 대소문자 구분
print("10. 특정 문자 종료 여부:", "Hello".endswith("x"))

print("11. 문자로만 구성여부:", "Hello".isalpha())
print("11. 문자로만 구성여부:", "Hello123".isalpha())

print("12. 숫자로만 구성여부:", "Hello123".isnumeric())
print("12. 숫자로만 구성여부:", "1234".isnumeric())

print("13. 특정 문자 위치 반환:", "Hello".find('e'))

print("14. 멤버십 연산자:", 'H' in 'Hello')
print("14. 멤버십 연산자:", 'a' in 'Hello')

print("15. 구분자 :", "홍길동/이순신/유관순".split(("/")))  # 리스트 반환
print("15. 구분자 :", "홍길동,이순신,유관순".split((",")))  # 리스트 반환
print("15. 구분자 :", "홍길동;이순신;유관순".split((";")))  # 리스트 반환
# help(str.split)

print("16. join :", "과 ".join(["홍길동", "이순신", "유관순"]))  # 문자열로 된 리스트
# help(str.join)
print("="*50)


 

음.. 워낙에 함수가 많아서.....
이렇게 포스팅할 생각이 아니었는데... 한 것도 없는데 시간은 시간대로 가고;;;;;

짧게 슬라이싱, 인덱스랑 같이 포스팅하려고 했는데....
나눠야겠습니다.

고롬... 다음엔 슬라이싱, 인덱싱으로 만나뵙겠습니다.

고롬 이만;;;

반응형

댓글