Python의 String 데이터 타입과 가장 기본적인 String operations 을 알아보겠습니다. 문자열(Python Document)은 문자들의 불변(Immutable) 시퀀스로 작은따옴표('
)나 큰따옴표("
)로 감싸서 정의합니다.
text_1 = "Hello, World!"
text_2 = 'Hello, World!'
String에서 주요한 함수와 메서드에 대해서 살펴보도록 하겠습니다.
주요 함수 및 메서드 (String operations)
len()
: 문자열의 길이 반환.
len("Hello") # 5
lower()
/ upper()
: 대소문자 변환.
"Hello".lower() # 'hello'
"Hello".upper() # 'HELLO'
strip()
: 양쪽 공백 제거.
" Hello ".strip() # 'Hello'
replace()
: 문자열 대체.
"Hello, World!".replace("World", "Python") # 'Hello, Python!'
split()
: 문자열을 특정 구분자로 나눠 리스트로 반환.
"a,b,c".split(",") # ['a', 'b', 'c']
join()
: 리스트를 문자열로 병합.
",".join(['a', 'b', 'c']) # 'a,b,c'
format()
/ f-string
: 문자열 포매팅.
"Hello, {}!".format("World") # 'Hello, World!'
name = "World" f"Hello, {name}!" # 'Hello, World!'
isalnum()
/ isalpha()
/ isdigit()
: String 특성 확인.
"123".isdigit() # True
"abc".isalpha() # True
"abc123".isalnum() # True
일단 가장 기본적을 사용하는 함수들을 살펴봤습니다. 이제 실제 어플리케이션을 운영하는데 사용하는 코드를 살펴보겠습니다. 사실 다 알고 있으면 사용하기 보다는 한번 읽어보시고 이런게 있구나 정도만 알고 있고 필요할때 찾아사용하면 됩니다.
참고로 이 포스트말고 다른 포스트에 문장을 다루는 것을 다시 한번 이야기 하려고 합니다.
String operations Code
first = "A"
second = "B"
full = first + " " + second
print(full) # "A B"
repeat_str = "Ha " * 3
print(repeat_str) # "Ha Ha Ha"
# slice
print(_str[7:12]) # "name"
print(_str[:5]) # " Hi m"
print(_str[7:]) # "name is John "
# Capital
print(_str.upper()) # " HI MY NAME IS JOHN "
print(_str.lower()) # " hi my name is john "
print(_str.capitalize()) # " hi my name is john "
print(_str.title()) # " Hi My Name Is John "
print(_str.strip()) # "Hi my name is John"
print(_str.lstrip()) # "Hi my name is John "
print(_str.rstrip()) # " Hi my name is John"
# find, replace
print(_str.find("John")) # 15
print(_str.find("World")) # -1
print(_str.replace("John", "Jang")) # " Hi my name is Jang "
# f-strings (Python 3.6+)
name = "John"
age = 1
intro = f"Hi~ My name is {name}, I am {age} years old."
print(intro) # "MHi~ My name is John, I am 1 years old."
# str.format()
intro_format = "Hi~ My name is {}, I am {} years old.".format(name, age)
print(intro_format) # "Hi~ My name is John, I am 1 years old."
# %
intro_percent = "Hi~ My name is %s, I am %d years old." % (name, age)
print(intro_percent) # "Hi~ My name is John, I am 1 years old."
# Split
sentence = "This is a sentence."
words = sentence.split()
print(words) # ['This', 'is', 'a', 'sentence.']
# join
joined_sentence = ' '.join(words)
print(joined_sentence) # "This is a sentence."
#find() / index()
"hello".find("l") # 2
"Hello".index("l") # 2
#startswith() / endswith()
"Hello".startswith("He") # True
"Hello".endswith("o") # True
Output
A B
Ha Ha Ha
20
H
n
name
Hi m
name is John
HI MY NAME IS JOHN
hi my name is john
hi my name is john
Hi My Name Is John
Hi my name is John
Hi my name is John
Hi my name is John
15
-1
Hi my name is Jang
Hi~ My name is John, I am 1 years old.
Hi~ My name is John, I am 1 years old.
Hi~ My name is John, I am 1 years old.
['This', 'is', 'a', 'sentence.']
This is a sentence.
매우 간단히 사용할 수 있는 함수와 구조 입니다. 저는 시스템 프로그래밍을 할때는 string 자료구조를 많이 사용하지는 않았습니다. 로그를 발생 시키거나 시스템 정보를 추출할때 정도만 사용했던 것 같습니다.
그런데 지금 일상에 도움이 되는 정보를 추출하고 요약 정리해서 리포팅 하는 것을 하다보니 상당히 많은 부분에서 사용하게 되네요. 그리고 최근에는 LLM을 사용하고 RSS / API를 사용해 데이터를 주고 받다보니 훨신 많이 쓰고 있습니다.
20년 전 C 언어에서 사용하던 char를 생각 해보면 정말 편한 것 같습니다. 이런게 함수에서 제공하는게 편의성이라고 생각합니다. 속도는 좀 떨어질수 있지만 개선이 많이 되서 LLM 처럼 어마 어마한 문장을 컨트롤 해야되는게 아니면 개발시 크게 느끼지 못할 것이라 생각됩니다.