본문 바로가기
개발/Python3

python3 - String(문자열) 사용하기

by Devsong26 2021. 6. 9.

재직 중에 파이썬3을 배워 열심히 사용하고 있다.

매번 이런 클래스 관련 포스팅을 올릴 때마다 공식 레퍼런스를 보고 학습해서 올리고 있지만,

copy & paste 하는 느낌을 지울 수는 없다;;

 

파이썬3 String(문자열)을 사용해보자!


포맷

파이썬3의 문자열을 형태는 아래와 같다.

# 한 줄 문자열
single_line_1 = "한줄 문자열 1"
single_line_2 = '한줄 문자열 2'

# 여러 줄 문자열
multi_line_1 = '123 ' \ # '\'가 라인의 마지막 글자여야 함
            + '456 ' \
            + '789 '
multi_line_2 = """
	123
	456
	789
""" # """ """은 주석으로 많이 사용하지만 쿼리 작성할 때 유용하다.

n = 123
s = str(n) # 형변환
print(type(s))

메서드

 

str.startswith(prefix[, start[, end]])

문자열이 지정된 prefix 로 시작하면 True 를 돌려주고, 그렇지 않으면 False 를 돌려줍니다. 
prefix 는 찾고자 하는 접두사들의 튜플이 될 수도 있습니다.
선택적 start 가 제공되면 그 위치에서 검사를 시작합니다.
선택적 end 를 사용하면 해당 위치에서 비교를 중단합니다.
print("string method startswith".startswith("string"))

 

str.endswith(suffix[, start[, end]])

문자열이 지정된 suffix 로 끝나면 True 를 돌려주고, 그렇지 않으면 False 를 돌려줍니다. 
suffix 는 찾고자 하는 접미사들의 튜플이 될 수도 있습니다.
선택적 start 가 제공되면 그 위치에서 검사를 시작합니다.
선택적 end 를 사용하면 해당 위치에서 비교를 중단합니다.
print("string method endswith".endswith("endswith"))

 

str.format(*args, **kwargs)

문자열 포맷 연산을 수행합니다.
이 메서드가 호출되는 문자열은 리터럴 텍스트나 중괄호 {} 로 구분된 치환 필드를 포함할 수 있습니다.
각 치환 필드는 위치 인자의 숫자 인덱스나 키워드 인자의 이름을 가질 수 있습니다.
각 치환 필드를 해당 인자의 문자열 값으로 치환한 문자열의 사본을 돌려줍니다.
formatter_1 = "formatter {}".format(1)
formatter_2 = 'formatter {0}'.format(2)
print(formatter_1)
print(formatter_2)


formatter_3 = """
    INSERT INTO table_name
    VALUES(
        {0}, {1}, {2}
    )
""".format('table', 'name', 'column')
formatter_4 = """
    INSERT INTO table_name
    VALUES(
        {}, {}, {}
    )
""".format('none', 'index', 'mark')
print(formatter_3)
print(formatter_4)


formatter_5 = """
    SELECT * 
    FROM table_name
    WHERE {} = {1}
        AND {} = {3}
""".format('col_1', 'val_1', 'col_2', 'val_2') # 여기서는 에러 난다. 섞어 사용 못한다.
print(formatter_5)

 

str.index(sub[, start[, end]])

find() 과 비슷하지만, 부분 문자열을 찾을 수 없는 경우 ValueError 를 일으킵니다.
print('str method index()'.index('s')) # 0
print('str method index()'.index('k')) # ValueError: substring not found

 

str.find(sub[, start[, end]])

부분 문자열 sub 가 슬라이스 s[start:end] 내에 등장하는 가장 작은 문자열의 인덱스를 돌려줍니다.
선택적 인자 start 와 end 는 슬라이스 표기법으로 해석됩니다. 
sub 가 없으면 -1 을 돌려줍니다.
print('str method find()'.find('s')) # 0
print('str method find()'.find('k')) # -1

 

str.isalnum()

문자열 내의 모든 문자가 알파벳과 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 문자 c 는 다음 중 하나가 True 를 반환하면 알파벳이거나 숫자입니다: c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric().
print('123a@'.isalnum()) # False
print('123a'.isalnum()) # True

 

str.isalpha()

문자열 내의 모든 문자가 알파벳이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
알파벳 문자는 유니코드 문자 데이터베이스에서 《Letter》로 정의된 문자입니다.
즉, 일반 범주 속성이 《Lm》, 《Lt》, 《Lu》, 《Ll》, 《Lo》 중 하나인 문자입니다.
이것은 유니코드 표준에서 정의된 《Alphabetic》 속성과 다름에 주의하십시오.
print('asdfasdf'.isalpha()) # True
print(' asdfasdf'.isalpha()) # False

 

str.isdecimal()

문자열 내의 모든 문자가 십진수 문자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 십진수 문자는 십진법으로 숫자를 구성할 때 사용될 수 있는 문자들입니다.
예를 들어, U+0660, ARABIC-INDIC DIGIT ZERO. 형식적으로 십진수 문자는 유니코드 일반 범주 《Nd》 에 속하는 문자입니다.
print('e1'.isdecimal()) # False
print('123.123'.isdecimal()) # False
print('123'.isdecimal()) # True

 

str.isdigit()

문자열 내의 모든 문자가 디짓이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
디짓에는 십진수 문자와 호환성 위 첨자 숫자와 같은 특수 처리가 필요한 숫자가 포함됩니다.
여기에는 카로슈티 숫자처럼 십진법으로 숫자를 구성할 때 사용될 수 없는 것들이 포함됩니다.
형식적으로, 디짓은 속성값이 Numeric_Type=Digit 또는 Numeric_Type=Decimal인 문자입니다.
print('e1'.isdigit()) # False
print('123.123'.isdigit()) # False
print('123'.isdigit()) # True

 

str.islower()

문자열 내의 모든 케이스 문자가 소문자이고, 적어도 하나의 케이스 문자가 존재하는 경우 True를 돌려주고,
그렇지 않으면 False를 돌려줍니다.
print('e1A'.islower()) # False
print('123.123'.islower()) # False
print('e1'.islower()) # True

 

str.isupper()

문자열 내의 모든 케이스 문자가 대문자이고, 적어도 하나의 케이스 문자가 존재하는 경우 True를 돌려주고,
그렇지 않으면 False를 돌려줍니다.
print('e1A'.isupper()) # False
print('123.123'.isupper()) # False
print('AAA'.isupper()) # True

 

str.join(iterable)

iterable 의 문자열들을 이어 붙인 문자열을 돌려줍니다. 
iterable 에 bytes 객체나 기타 문자열이 아닌 값이 있으면 TypeError 를 일으킵니다.
요소들 사이의 구분자는 이 메서드를 제공하는 문자열입니다.
s = '-'
print(s.join(['010', '2222', '3333']))

 

str.lower()

모든 케이스 문자가 소문자로 변환된 문자열의 복사본을 돌려줍니다.
print('AAAAA'.lower())

 

str.upper()

모든 케이스 문자가 대문자로 변환된 문자열의 복사본을 돌려줍니다. 
s 가 케이스 없는 문자를 포함하거나 결과 문자의 유니코드 범주가 《Lu》 (Letter, 대문자) 가 아닌 경우,
예를 들어 《Lt》 (Letter, 제목 케이스), s.upper().isupper() 가 False 일 수 있음에 주의하십시오.
print('aaaaa'.upper())

 

str.strip([chars])

선행과 후행 문자가 제거된 문자열의 복사본을 돌려줍니다. 
chars 인자는 제거할 문자 집합을 지정하는 문자열입니다.
생략되거나 None 이라면, chars 인자의 기본값은 공백을 제거하도록 합니다. 
chars 인자는 접두사나 접미사가 아닙니다; 모든 값 조합이 제거됩니다:
print('   spacious   '.strip()) # spacious
print('www.example.com'.strip('cmowz.')) # example
가장 바깥쪽의 선행 또는 후행 chars 인자 값들이 문자열에서 제거됩니다.
문자는 chars 에 있는 문자 집합에 포함되지 않은 문자에 도달할 때까지 맨 앞에서 제거됩니다.
끝에서도 유사한 동작이 수행됩니다. 예를 들면:
comment_string = '#....... Section 3.2.1 Issue #32 .......'
print(comment_string.strip('.#! '))

 

str.split(sep=None, maxsplit=-1)

sep 를 구분자 문자열로 사용하여 문자열에 있는 단어들의 리스트를 돌려줍니다. 
maxsplit 이 주어지면 최대 maxsplit 번의 분할이 수행됩니다 (따라서, 리스트는 최대 maxsplit+1 개의 요소를 가지게 됩니다). maxsplit 이 지정되지 않았거나 -1 이라면 분할 수에 제한이 없습니다 (가능한 모든 분할이 만들어집니다).
sep 이 주어지면, 연속된 구분자는 묶이지 않고 빈 문자열을 구분하는 것으로 간주합니다 (예를 들어, '1,,2'.split(',') 는 ['1', '', '2'] 를 돌려줍니다). 
sep 인자는 여러 문자로 구성될 수 있습니다 (예를 들어, '1<>2<>3'.split('<>') 는 ['1', '2', '3'] 를 돌려줍니다).
지정된 구분자로 빈 문자열을 나누면 [''] 를 돌려줍니다.
예를 들면:
print('1,2,3'.split(','))
print('1,2,3'.split(',', maxsplit=1))
print('1,2,,3,'.split(','))
sep 이 지정되지 않거나 None 이면, 다른 분할 알고리즘이 적용됩니다: 연속된 공백 문자는 단일한 구분자로 간주하고, 문자열이 선행이나 후행 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않습니다.
결과적으로, 빈 문자열이나 공백만으로 구성된 문자열을 None 구분자로 나누면 [] 를 돌려줍니다.
예를 들면:
print('1 2 3'.split())
print('1 2 3'.split(maxsplit=1))
print('   1   2   3   '.split())

 

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

모든 부분 문자열 old 가 new 로 치환된 문자열의 복사본을 돌려줍니다. 선택적 인자 count 가 주어지면, 앞의 count 개만 치환됩니다.
print('a is b'.replace('a', 'b'))

 


상기 포맷과 메서드는 알고 있는 일부만 적었으며 레퍼런스를 찾아보면 더 많은 내용이 있다.

각 메서드의 설명은 공식 레퍼런스의 내용과 같다.


Reference URLs:

https://docs.python.org/ko/3/library/stdtypes.html#string-methods

 

내장형 — Python 3.9.5 문서

다음 섹션에서는 인터프리터에 내장된 표준형에 관해 설명합니다. 기본 내장 유형은 숫자, 시퀀스, 매핑, 클래스, 인스턴스 및 예외입니다. 일부 컬렉션 클래스는 가변입니다. 제자리에서 멤버

docs.python.org

https://docs.python.org/ko/3/library/string.html

 

string — 일반적인 문자열 연산 — Python 3.9.5 문서

string — 일반적인 문자열 연산 소스 코드: Lib/string.py 문자열 상수 이 모듈에 정의된 상수는 다음과 같습니다: string.ascii_letters 아래에 나오는 ascii_lowercase와 ascii_uppercase 상수를 이어붙인 것입니다

docs.python.org