본문 바로가기
Python/Do it! 점프 투 파이썬

[Do it! 파이썬] 2-2. 문자열

by Couldi 2023. 9. 13.
반응형

23. 9. 13.

- Could -

 

이 글은 막연히 python을 공부해야하나 라는 불안감으로 python으로 프로그래밍을 입문하는 사람들을 위한 글입니다.
python을 시작하는 많은 분들이 보는 '점프 투 파이썬' 책을 중심으로 '필자의 주관'이 잔뜩 담긴 설명을 추가하여, 파이썬 공부에 흥미를 붙이고 책 완주 후의 계획을 수립할 수 있도록 쓰여졌습니다.
'점프 투 파이썬'은 wikidoc(https://wikidocs.net/book/1)으로 무료로도 확인 가능합니다.
1. 문자열
2. 문자열 생성하기
3. 문자열 인덱싱과 슬라이싱
4. 문자열 포맷팅
5. 문자열 길이
6. 문자열 메소드

1. 문자열

문자열(String)은 프로그래밍에서 매우 중요한 데이터 유형이고, 텍스트 데이터를 다루는 데 사용된다. 보통 아래와 같이 생겼다.

"Life is too short, You need Python"
"a"
"123"

 

2. 문자열 생성하기

기본 문자열 생성

문자열을 생성하는데는 다양한 방법이 존재한다. 가장 기본적인 방법은 작은따옴표(')나 큰따옴표(")로 문자열을 둘러싸는 것이다.

single_quoted = 'This is a single-quoted string.'
double_quoted = "This is a double-quoted string."

멀티라인 문자열 생성

여러줄의 문자열을 만들고 싶다면 아래와 같이 입력하면 된다.

multi_line = '''This is a
multi-line
string.'''

이때에도 ''' 을사용하거나 """ 을 사용한다. (세개의 작은따옴표나 세개의 큰따옴표를 쓴다.)

 

이스케이프 시퀀스

만약 특수준자를 문자열에 포함 시키고 싶다면 이스케이프 시퀀스를 사용한다. ( \ 역슬레시 기호다)

 

escaped_string = "This is a string with a newline character: \nHello, World!"

위 와 같이 \n을 입력한 경우, 줄바꿈이 된다.

형변환

캐스팅이라고 부르기도 하는데, 다른 타입의 데이터를 문자열로 바꾸는 방법이다. 일반적으로 str() 함수를 사용한다.

number = 42
string_number = str(number)  # "42"

 

3. 문자열의 인덱싱과 슬라이싱

문자열 인덱싱 (String Indexing)

문자열은 문자의 나열이기 때문에 인덱스를 가지며, 리스트와 비슷한 형태로 각 문자에 접근이 가능하다.

my_string = "Python"

# 문자열의 각 문자에 대한 인덱스
# P   y   t   h   o   n
# 0   1   2   3   4   5

char_at_index_0 = my_string[0]  # "P"
char_at_index_3 = my_string[3]  # "h"

인덱스 값으로 음수를 넣으면 문자열의 끝에서부터 역순으로 접근 가능하다.

last_char = my_string[-1]  # "n"


문자열 슬라이싱 (String Slicing)

슬라이싱은 문자열의 일부를 추출하는 기능이다. 시작 인덱스와 끝 인덱스를 사용해서 문자열의 부분을 선택하는데, 시작 인덱스는 포함되고, 끝 인덱스는 포함되지 않는다.

my_string = "Python is fun"

# 문자열 슬라이싱 예제
substring1 = my_string[0:6]  # "Python"
substring2 = my_string[7:9]  # "is"
substring3 = my_string[10:]  # "fun" (끝 인덱스를 생략하면 끝까지 선택)

여기서도 음수 인덱스를 사용 가능하다.

substring4 = my_string[-3:]  # "fun" (뒤에서부터 3번째 문자부터 끝까지)
substring5 = my_string[:-3]  # "Python is "

추가로 스탭(step)을 지정하여, 일정 간격으로 문자열을 선택하는 것도 가능하다.

my_string = "abcdefghij"
every_second_char = my_string[::2]  # "acegi" (스텝이 2인 경우)

 

4. 문자열 포맷팅

문자열 포맷팅은 문자열 안에 변수, 값 또는 표현식을 삽입하여 동적인 문자열을 생성하는 기술이다. 파이썬에서 문자열 포맷팅 하는 방식은 여러가지가 있지만, 지금은 f-String 사용을 권장하는 추세이다. 옛날 코드를 확인해야할 일이 있을지도 몰라, 여기서는 str.format() 메서드도 설명한다.

f-String

f-String은 파이썬 3.6 이상 버전에서만 지원이 된다. 아래와 같이 사용한다.

name = "Alice"
age = 30

formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)
# 출력: "My name is Alice and I am 30 years old."

직관적이고 사용이 편하다는 장점, 그리고 읽기 편하다.

 

str.format() 메서드

f-string과 유사하나, 조금 오래된 방식이다. f-string의 사용을 권장하나, 이 메소드를 사용하는 코드를 마주할 일이 있을지 몰라 언급한다.

name = "Bob"
age = 25

formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)
# 출력: "My name is Bob and I am 25 years old."

 

5. 문자열 길이

문자열을 다루다 보면 종종 문자열의 길이를 반환해야할 경우가 생긴다. 이때 사용하는 것은 len() 함수이다.

my_string = "Hello, World!"
length = len(my_string)
print(length)  # 출력: 13 (공백과 구두점을 포함한 문자열의 총 길이)

 

6. 문자열 메소드

문자열을 다루는 방식은 굉장히 여러가지가 있고, 이에 따라 개발자들이 이미 구현해 놓은 메소드들 또한 존재한다.

아래는 chatGPT가 설명하는 문자열 메소드 들에 대한 내용이다.

 

ChatGPT가 설명하는 문자열 메소드들

문자열과 관련된 다양한 메서드를 사용하여 문자열을 조작, 검색, 변환 등 다양한 작업을 수행할 수 있습니다. 아래에는 파이썬의 문자열 메서드 중 일부를 설명하겠습니다:

  1. str.upper() 및 str.lower():
    • str.upper(): 문자열을 모두 대문자로 변환합니다.
    • str.lower(): 문자열을 모두 소문자로 변환합니다.
    pythonCopy code
    my_string = "Hello, World!" upper_case = my_string.upper() # "HELLO, WORLD!" lower_case = my_string.lower() # "hello, world!"
  2. str.strip():
    • 문자열 양쪽 끝의 공백 문자(스페이스, 탭, 개행 등)를 제거합니다.
    pythonCopy code
    my_string = " Hello, World! " stripped_string = my_string.strip() # "Hello, World!"
  3. str.split():
    • 문자열을 공백 문자를 기준으로 분리하고, 분리된 부분 문자열을 리스트로 반환합니다.
    pythonCopy code
    my_string = "Hello, World!" words = my_string.split() # ["Hello,", "World!"]
  4. str.replace():
    • 문자열 내의 특정 부분 문자열을 다른 문자열로 대체합니다.
    pythonCopy code
    my_string = "Hello, World!" new_string = my_string.replace("World", "Python") # "Hello, Python!"
  5. str.find()str.index():
    • 문자열 내에서 특정 부분 문자열의 첫 번째 인덱스를 찾습니다. str.find()는 해당 부분 문자열을 찾지 못할 경우 -1을 반환하고, str.index()는 해당 부분 문자열을 찾지 못할 경우 ValueError 예외를 발생시킵니다.
    pythonCopy code
    my_string = "Hello, World!" index1 = my_string.find("World") # 7 index2 = my_string.index("World") # 7
  6. str.startswith()str.endswith():
    • 문자열이 특정 접두사 또는 접미사로 시작하거나 끝나는지 여부를 확인합니다.
    pythonCopy code
    my_string = "Hello, World!" starts_with_hello = my_string.startswith("Hello") # True ends_with_world = my_string.endswith("World") # True
  7. str.join():
    • 문자열 리스트를 하나의 문자열로 결합합니다.
    pythonCopy code
    words = ["Hello", "World"] my_string = " ".join(words) # "Hello World"
  8. str.count():
    • 문자열 내에서 특정 부분 문자열의 출현 횟수를 계산합니다.
    pythonCopy code
    my_string = "Hello, World! Hello, Python!" count_hello = my_string.count("Hello") # 2

이러한 문자열 메서드를 사용하면 문자열을 효율적으로 조작하고 다양한 작업을 수행할 수 있습니다. 이러한 메서드를 활용하여 문자열 처리를 보다 쉽게 수행할 수 있습니다.

반응형

댓글