2025.03.01(토) 슈퍼코딩 AI/DATA Day 6 / 7 일일보고 - 데이터타입 문자열 (str) 실습 / 1주차 마무리

Honey_Bunny·2025년 3월 1일

슈퍼코딩

목록 보기
9/23

문자열 (str)


  • 문자열 리터럴은 작은 따옴표 또는 큰 따옴표로 묶는다
  • 숫자도 따옴표안에 있으면 문자열 이다
  • 문자 데이터타입(Character)이 별도로 없다

'Python String! 한글 1234 !@#$%^'
"Python String! 한글 1234 !@#$%^"
""
"1234"
'''Python String! 한글 1234 !@#$%^'''
"""Python String! 한글 1234 !@#$%^"""

파이썬 문자열

str1 = 'Python String! 한글 1234 !@#$%^'
str2 = "Python String! 한글 1234 !@#$%^"
str3 = 'a'
str4 = ""
str5 = "1234"
str6 = '''Python String! 한글 1234 !@#$%^'''
str7 = """Python String! 한글 1234 !@#$%^"""

문자열 안에 따옴표 자체를 포함하는 방법

str1 = 'Python String! "한글" 1234 !@#$%^'
str2 = 'Python String! \'한글\' 1234 !@#$%^'
str3 = "Python String! '한글' 1234 !@#$%^"
str4 = "Python String! \"한글\" 1234 !@#$%^"
print(str1, str2, str3, str4, sep="\n")

줄바꿈

str1 = '첫번째 줄\n 두번째 줄\n 세번째 줄\n'
str2 = '''첫번째 줄
 두번째 줄
 세번째 줄
'''
str3 = """첫번째 줄
 두번째 줄
 세번째 줄
"""
print(str1, str2, str3, sep="\n")

줄바꿈 아님 주의

str1 = "첫번째 줄" +  \
       " 두번째 줄" + \
       " 세번째 줄"
print(str1)

일반적으로 많이 사용되는 이스케이프(escape) 문자


\" : 큰따옴표
\' : 작은따옴표
\n : 줄바꿈(new line) 문자
\t : 탭(tab) 문자
\\ : 백슬래시(backslash) 문자
print("안녕하세요. \"반갑습니다.\"")
print("안녕하세요. \'반갑습니다.\'")
print("안녕하세요.\n반갑습니다.")
print("안녕하세요.\t반갑습니다.")
print("안녕하세요.\\반갑습니다.")

문자열 붙이기


파이썬에서는 + 연산자와 * 연산자를 문자열에 사용할 수 있다
또한 문자열 리터럴이 연속으로 오면 이어 붙이기가 된다


print("Py" + "thon")

-> 제한사항이 있음

print("Py" "thon") 

-> "py"를 3번 반복하라.

print("py" * 3 + "thon") 

-> "-"을 10번 반복하라

print("-" * 10) 

결과

출력 : Python
출력 : Python
출력 : PyPyPython

연산자 우선순위


print("abc" * 3)
print(3 * "abc")
print(3 * "abc" + "def" * 2)
print(3 * ("abc" + "def") * 2)
print(3 * "abc" "def" * 2)

변수들끼리 혹은 변수와 문자열 리터럴을 이어붙이려면 + 를 사용해야 한다


prefix = "Py"
print(prefix + "thon")

문자열의 인덱스


 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

글자와 글자 사이에 인덱스가 있다고 생각해라.


word = "Python"
print(len(word))
print(word[0])
print(word[-6])
print(word[4])
print(word[-2])

인텍스 에러

print(word[6]) # error

한글 인덱스

word = "파이썬"
print(len(word))
print(word[0])
print(word[2])

파이썬에서 문자열은 값을 변경할 수 없는 불변(immutable) 객체이다


"Python"을 "Jython"으로 바꾸려는 잘못된 시도

word = "Python"
word[0] = "J"   # 에러 발생

문자열의 슬라이싱 방법


  • 슬라이싱은 문자열의 부분문자열(substring)을 얻기위해 사용
  • 범위를 벗어나는 슬라이스 인덱스는 슬라이싱할 때 부드럽게 처리됨
  • 변수명 [ 시작인덱스 : 끝인덱스 ] 형식으로 사용

문자열[n:m]
[n] : 1글자 잘라내기
[n:m] : n부터 m-1까지 문자열을 리턴합니다.
[:m] : 앞의 숫자를 생략하면 0부터 시작합니다.
[n:] : 뒤의 숫자를 생략하면 끝 글자까지 입니다.
[:] : 모두 생략하면 전체입니다.
[-n] : 음수 값을 지정하면 뒤에서부터 카운팅합니다.

문자열의 슬라이싱

word = "Python"
print(word[:2])    # 앞에서 2자리 까지
print(word[2:])    # 앞에서 2자리 이후 부터
print(word[2:4])   # 인텍스 2에서 부터 4 까지 substring
print(word[:-4])   # 처음부터 뒤에서 네자리 까지
print(word[-4:])   # 마지막 네 글자
출력 : Python

범위를 벋어나는 슬라이싱 처리

word = "Python"
print(word[:10])
print(word[10:])
print(word[-10:])
출력 : Python

문자열 처리 함수들


문자열 길이

print(len("Python"))
print(len("파이썬"))
출력 : 6
출력 : 3

공백 없애기

word = "         Python         "

앞,뒤 공백 모두 없애기

print("'" + word.strip() + "'")

윈쪽 공백 없애기

print("'" + word.lstrip() + "'")

오른쪽 공백 없애기

print("'" + word.rstrip() + "'")
출력 : 'Python'
출력 :'Python         '
출력 :'         Python'

문자 개수세기

str1 = "Hello Python! 안녕하세요 파이썬 이에요! 안녕하세요 Python!"
print(str1.count("Python"))
print(str1.count("!"))
print(str1.count("하세요"))
print(str1.count("파이썬!"))
출력 : 2
출력 : 3
출력 : 2
출력 : 0

문자열 찾기

index()로 문자열 찾기, 찾으면 첫번째 인덱스를 리턴하고 없으면 에러 처리된다.

str1 = "Hello Python! 안녕하세요 파이썬 이에요! 안녕하세요 Python!"
print(str1.index("Python!"))
print(str1.index("파이썬!"))

대, 소문자 변환

str1 = "hello PYTHON!"

대문자 변환

print(str1.upper())

소문자 변환

print(str1.lower())

첫자만 대문자로 변환

print(str1.capitalize())
출력 : HELLO PYTHON!
출력 : hello python!
출력 : Hello python!

문자열 바꾸기

문자열 바꾸기 - 새로운 문자열 리터럴을 만든다

str1 = "hello PYTHON"
print(str1.replace("없는단어", "Python!"))
print(str1.replace("PYTHON", "Python!"))
print(str1)

문자열을 바꾸고 변수값 바꾸기

str1 = str1.replace("PYTHON", "Python!!!")
print(str1)
출력 : hello PYTHON
출력 : hello Python!
출력 : hello PYTHON
출력 : hello Python!!!

문자열 나누기

str1 = "Hello Python! 안녕하세요 파이썬 이에요! 안녕하세요 Python!"
print(str1.split())
출력 : ['Hello', 'Python!', '안녕하세요', '파이썬', '이에요!', '안녕하세요', 'Python!']

문자열 합치기

words = ['Hello', 'Python!', '안녕하세요', '파이썬', '이에요!', '안녕하세요', 'Python!']
str1 = " ".join(words)
print(str1)
str1 = "_".join(words)
print(str1)
출력 : Hello Python! 안녕하세요 파이썬 이에요! 안녕하세요 Python!
출력 : Hello_Python!_안녕하세요_파이썬_이에요!_안녕하세요_Python!

형 변환


숫자를 문자열로 변환 하기

  • str() 함수로 문자열로 변환

정수를 문자열로 변환

str1 = str(100)
print(str1, type(str1))

실수를 문자열로 변환

str2 = str(1.12345)
print(str2, type(str2))

숫자를 문자열로 변환하여 사용하는 예시

score = 100
str1 = "홍길동의 시험 점수는 " + str(100) + "점 입니다."
print(str1)

문자열을 숫자로 변환 하기

  • int() 함수로 정수로 변환
  • float() 함수로 실수로 변환

문자열을 숫자로 변환하여 계산

score1 = "70"
score2 = "80.5"
score3 = 90.5
total_score1 = float(score1) + float(score2) + score3
print(total_score1)

정수로 더하려면 아래와 같이 하면 될까?

total_score2 = int(score1) + int(score2) + int(score3)
print(total_score2)

잘못된 정수 변환 예시

  • 문자열을 정수로 변환할때 문자열이 올바른 정수형을 표현하고 있어야 한다
int("10.1")
int("10.")
int("- 10")
int("10/2")
int("2+3")
int("0xA0")  # 16진수?

가능한 정수 변환 예시

num1 = int(" 10 ")
num2 = int("-10")
num3 = int("+10")
num4 = int(10.12345)
num5 = int(10/3)
num6 = int(2+3)
print(num1, num2, num3, num4, num5, num6, sep="\n")
num1 = int("10", base=2)       # 2진수
num2 = int("0b10", base=2)     # 2진수
num3 = int("A0", base=16)      # 16진수
num4 = int("0xA0", base=16)    # 16진수
print(num1, num2, num3, num4, sep="\n")

가능한 실수 변환 예시

num1 = float("10")
num2 = float("10.12345")
num3 = float("-1.2345e3")
num4 = float(10)
print(num1, num2, num3, num4, sep="\n")
출력 : 10.0
출력 : 10.12345
출력 : -1234.5
출력 : 10.0

정수형 데이가 필요할때, 팁

  • 먼저 좀 더 자유로운 실수형으로 변환하고 이이서 정수형으로 변환

정수로 더하려면 아래와 같이 하면 될까?

score1 = "70"
score2 = "80.5"
score3 = 90.5
total_score2 = int(float(score1)) + int(float(score2)) + int(score3)
print(total_score2)
출력 : 240

문자열 출력 방식


  • print(값) : 기본 출력 방법
  • print(값1, 값2, ...) : 여러 개의 값을 공백문자로 구분하여 출력
  • end 속성 : 마지막 문자열을 출력하고 출력할 문자 (초기 설정: 줄바꿈 문자)
  • sep 속성 : 여러 변수를 출력할 때, 각 값을 구분하기 위한 문자 (초기 설정: 공백 문자)

data1 = "안녕하세요"
data2 = 1
data3 = 4
data4 = 2
print(data1)
print("data2:", data2)
print(data2, data3, data4)
print(data2, data3, data4, sep=", ")
출력 : 안녕하세요
출력 : data2: 1
출력 : 1 4 2
출력 : 1, 4, 2

f-string : 내장된 표현식을 갖는 문자열 리터럴

f-string

name = "홍길동"
age = 24
height = 1.83 #미터
info1 = f"{name}의 나이는 {age}살 이고 키는 {height*100}cm 입니다"
print(info1)
answer = 10.123456789
str1   = f"the answer is {answer:.3f}"
print(str1)
price = 59000
txt1 = f"가격은 {price:,}원 입니다"
print(txt1)
출력 : 홍길동의 나이는 24살 이고 키는 183.0cm 입니다
출력 : the answer is 10.123
출력 : 가격은 59,000원 입니다

포멧 문자열 문법 : str.format() 으로 문자열을 포맷하는 방법

str.format()

name = "홍길동"
age = 24
height = 1.83 #미터
info2 = "{}의 나이는 {}살 이고 키는 {}cm 입니다".format(name, age, height*100)
print(info2)
answer = 10.123456789
str2 = "the answer is {:.3f}".format(answer)
print(str2)
price = 59000
txt2 = "가격은 {:,}원 입니다".format(price)
print(txt2)
출력 : 홍길동의 나이는 24살 이고 키는 183.0cm 입니다
출력 : the answer is 10.123
출력 : 가격은 59,000원 입니다

printf 스타일 문자열 포매팅 : 문자열을 % 연산자 왼쪽에 사용하는 예전 방식의 포맷팅

print 스타일 포멧팅

name = "홍길동"
age = 24
height = 1.83 #미터
info3 = "%s의 나이는 %d살 이고 키는 %fcm 입니다" % (name, age, height*100)
print(info3)
answer = 10.123456789
str3 = "the answer is %5.3f" % (answer)
print(str3)

숫자에 콤마를 찍는 쉬운 방법 없음

출력 :  홍길동의 나이는 24살 이고 키는 183.000000cm 입니다
출력 : the answer is 10.123

1주차 마무리

다시 듣는 파이썬 기본 문법이다 보니, 새롭다.

기존에 KG아이티뱅크에서 파이썬을 배웠었는데, 부족한 것이 많다 느껴서, 이번에 슈퍼코딩을 등록하게 됬다.

무엇보다 그때 느낀 AI를 관련한 영상 분석 시스템에 대해 더 다가갈 수 있는 계기가 됬으면 좋겠다.

이직을 위해 선택한 교육이지만, 내 목표이기도 하기때문에 더욱 열심히 나아가야겠다.

아직 까지는 어려운 강의가 아니다 보니, 너무 루즈해도 복습이 되는 것 같아서 좋다.

앞으로 10개월 뒤의 내 모습이 참 궁금하다.

열심히해서 이직까지 아자아자 화이팅하자 !!!


profile
현재 : C# WPF 개발자 / 목표 : AI 의료 영상 분석 연구원

0개의 댓글