Python - Strings

jinatra·2021년 7월 14일
0

Introduction to Strings


String

String = List of Characters
문자의 집합으로 이루어진 문자열

my_team = 'Arsenal'
first_initial = my_team[0]

print(first_initial)

# Output: A

Slice the Strings

string[first_index:last_index]

String(문자열)의 일부 부분 추출 가능

favorite_fruit = "blueberry"

favorite_fruit = "blueberry"

print(favorite_fruit[:3])
print(favorite_fruit[4:])
print(favorite_fruit[2:7])

# Output: blu
# Output: berry
# Output: ueber

Concatenating Strings

서로 다른 두 string (문자열)을 연결할 수 있다.
연결 사이엔 별도의 공간이 없으므로, 띄어쓰기가 필요할 시 직접 사이에 공란을 기입

first_name = "Ben"
last_name = "White"

def account_generator(first_name, last_name):
  return first_name[:3] + last_name[:3]

new_account = account_generator(first_name, last_name)

print(new_account)

# Output: BenWhi
# first_name의 첫 세글자와 last_name의 첫 세글자 연결

Length of Strings

len(string_name)

  • len(string_name) → string(문자열)의 길이를 알고자할 때 사용
  • len(string_name) - 1 → string(문자열)의 마지막 문자를 알고자할 때 사용
    (string의 index는 0부터 시작하지만, len()은 1부터 시작하기 때문)
first_name = "Kieran"
last_name = "Tierny"

def password_generator(first_name, last_name):
  temp_password = first_name[len(first_name)-3:] + last_name[len(last_name)-3:]
  return temp_password

temp_password = password_generator(first_name, last_name)

print(temp_password)

# Output: ranrny
# first_name[len(first_name)-3:] → first_name 글자수에서 3을 뺌

Negative Indices

string_name[-n]

마지막 문자부터 시작하여 역순으로 진행
마지막 문자 → -1부터 시작

team_description = 'Arsenal is the best team in the world'

second_to_last = team_description[-2]
final_four_texts = team_description[-4:]

print(second_to_last)
print(final_four_texts)

# Output: l
# Output: orld

Strings → Immutable

한번 정의된 string(문자열)은 변경할 수 없다

first_name = "Tieran"
last_name = "Tierny"

first_name[0] = "K"

# Output: TypeError
# 변수 first_name은 이미 정의되었으므로 변경 불가

Escape Characters

\

따옴표 내부에 다른 따옴표를 쓰고자할 때에는 따옴표 앞에 \ 추가

player_nickname = 'Kieran \'the King\' Tierny'

print(player_nickname)

# Output: Kieran 'the King' Tierny

Iterating through Strings

string(문자열)도 list이기 때문에, for문이나 while문을 통해 값을 차례대로 꺼낼 수 있다.(iterate)

def get_length(word):
  counter = 0
  for letter in word:
    counter += 1
  return counter

singer = 'Sinatra'

print(get_length(singer))

Strings and Conditionals (Part I)

string(문자열)을 list로 간주하게 되면, if문을 활용한 조건문 작성 가능

# 알파벳의 단어 안 존재 여부를 확인하는 함수

def letter_check(word, letter):
  for character in word:
    if character == letter:
      return True
  return False

print(letter_check('apple', 'a'))

# Output: True

Strings and Conditionals (Part II)

in

in 연산자를 사용하여 특정 문자열 안에 찾고자하는 문자열이 있는지 확인 가능

# 특정 문자열 안에 찾고자하는 문자열의 존재 여부 체크

def contains(big_string, little_string):
  return little_string in big_string

print(contains("watermelon", "melon"))

# Output: True
# 서로 다른 두 문자열 안에 같은 알파벳이 있을 시 해당 알파벳 출력

def common_letters(string_one, string_two):
  common = []
  for letter in string_one:
    if (letter in string_two) and not (letter in common):
      common.append(letter)
  return common

print(common_letters("banana", "cream"))

# Output: ['a']




Take Away

String 과 List의 형태적 동일성?

마지막 두 챕터인 Strings and Conditionals를 보면, 결국 string도 list와 동일한 취급이라 iterate, 즉 데이터를 순회해서 처리한다고 한다.
그러면 string의 문자 하나하나, 예를 들어 'sinatra'의 s, i, n, a, t, r, a가 하나하나 모두 별도의 문자로 취급을 받아 컴퓨터가 하나하나씩 훑고 간다는 뜻인것인가?
어렵다..

다시 생각해보면..?

다시 복습을 하다보면, 결국 위에서 배운 String, 즉 문자열의 성질들이 대부분 list와 동일한 듯 하다.
결국 두개가 같은 속성을 가지고 있기에 처리도 동일하게 된다는 것일까?

profile
으악

0개의 댓글