문자열

문자열도 시퀀스 자료구조에 속함

리스트에서 사용했던 인덱싱, 슬라이싱, 내장함수 모두 문자열에서 쓸 수 있음

 

문자열 내장 함수

함수 설명
chr() 정수를 문자로 변환
ord() 문자를 정수로 변환
len() 문자열의 길이를 반환
str() 객체의 문자열 표현을 반환

 

하지만 문자열은 불변객체이기 때문에, 리스트와는 달리 문자열을 바꿀 수 없다.

word = "abcdef"
word[0]="A"
#TypeError: "str" object does not support item assignment

문자열 변경을 위해서는 새로운 사본 생성이 필요하다. ( 대부분 알아서 사본을 생성해주니 크게 신경 안 써도 된다)

word = "abcdef"
word = "A" + word[1:]
print(word)
#출력 결과 : "Abcdef"

 

문자열의 비교

==, !=, <, > 연산자를 문자열에도 적용 가능

a = input("문자열을 입력하시오: ")
b = input("문자열을 입력하시오: ")
if( a < b ):
	print(a, "가  앞에  있음")
else:
	print(b, "가  앞에  있음")
#문자열을 입력하시오: apple
#문자열을 입력하시오: orange
#apple 가 앞에 있음

 

문자열 출력하기

print함수의 가변 인수를 활용한 출력

대표적으로 밑의 두 개가 쓰임

  • format()
  • f-string
x = 25
y = 98
prod = x * y
#format()함수 이용
print("{}과 {}의 곱은 {}".format(x,y,prod))
#f-string이용
print(f"{x}과 {y}의 곱은 {prod}")
#25과 98의 곱은 2450
#25과 98의 곱은 2450

처음 파이썬을 배울 때는 format()함수를 많이 사용하지만, 개인적인 생각으로 f-string이 더 편한 것 같음

 

대소문자 변환

  • capitalize() : 첫문자만  대문자  변환
  • lower() : 모든 알파벳 문자가 소문자로 변환된 사본 반환
  • upper() : 모든 알파벳 문자가 대문자로 변환된 사본 반환
s = "i am a student."
print(s.capitalize())
s = "Breakfast At Tiffany"
print(s.lower())
print(s.upper())
#I am a student.
#breakfast at tiffany
#BREAKFAST AT TIFFANY

 

문자열 찾기 및 바꾸기

바꾸기

  • startswith(s) : 문자(열) s로 시작되는 문자열이면 True가  반환
  • endswith(s) : 문자(열) s로 종료되는 문자열이면 True가  반환
  • replace(a,b) : 문자열 내에 a 문자열을 b 문자열로 변환
s = input("파이썬  소스  파일  이름을  입력하시오: ")
if s.endswith(".py"):
    print("올바른  파일  이름입니다")
else :
    print("올바른  파일  이름이  아닙니다.")
#파이썬  소스  파일  이름을  입력하시오: abc.py
#올바른  파일  이름입니다

#파이썬  소스  파일  이름을  입력하시오: abc.cy
#올바른  파일  이름이  아닙니다.
s = "www.naver.com"
print(s.replace("com", "co.kr"))
#출력 결과 : www.naver.co.kr

 

찾기

  • find() : 대상 문자열 안에서 부분 문자열을 찾아서 인덱스를 반환(못 찾으면 -1 리턴)
  • rfind() : 끝에서 시작하여 지정된 부분 문자열을 찾아 인덱스 리턴
  • count() : 주어진 문자열에서 부분 문자열이 등장하는 숫자 리턴
s = "www.naver.co.kr"
print(s.find(".kr"))
#출력 결과 : 12
s = "Let it be, let it be, let it be"
print(s.rfind("let"))
#출력 결과 22
s = "www.naver.co.kr"
print(s.count("."))
#출력 결과 : 3

 

문자열 분류, 공백 제거

문자 분류

  • isalpha() : 문자열  안에  모든  문자가  알파벳이면  True
  • isdigit(): 문자열  안에  모든  문자가  숫자이면  True
  • islower(), isupper() : 문자열 안에 모든 문자가 소문자(대문자)이면 True
코드 리턴 값
"ABCabc".isalpha()  True
"123".isdigit() True
"abc".islower()  True

 

공백 제거

strip() : 문자열  첫  부분과  끝  부분의  불필요한  공백  제거

  • 문자 사이의 공백은 제거하지 않음
  • 인수가 전달될 경우 공백이 아닌 인수값으로 전달된 문자 제거
  • rstrip(), lstrip() : 오른쪽(왼쪽) 끝의 공백 또는 원치 않는 문자 제거
s = "   Hello, World!   "
print(s.strip()) 
#출력 결과 : Hello, World!
s = "########this is example#####"
print(s.strip("#"))
#출력 결과 : this is example

 

문자열 분해, 결합

  • split() : 문자열 분해 (자세한 설명은 예시 참고 바람)
  • join() : 리스트  형태의  단어들을  모아서  하나의  문자열로  만드는  역할(연결될 문자 사이에 들어갈 문자 지정 가능)
s = "Welcome to Python"
print(s.split())
#출력 결과 : ["Welcome", "to", "Python"]
s = "Hello, World!"
print(s.split(","))
#['Hello', ' World!']
s = "Hello, World!"
print(s.split(", "))
#출력 결과 : ['Hello', 'World!']
print(list("Hello, World!"))
#['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']

 

print(",".join(["apple", "grape", "banana"]))
#출력 결과 : "apple", "grape", "banana"
print("-".join("010.1234.5678".split(".")))
#출력 결과 : 010-1234-5678

'Python Category > Python' 카테고리의 다른 글

[Python] 파일 입출력  (1) 2022.12.08
[Python] 모듈  (0) 2022.12.08
[Python] 딕셔너리  (0) 2022.12.07
[Python] 세트  (0) 2022.12.07
[Python] 튜플  (0) 2022.12.06