문자열
문자열도 시퀀스 자료구조에 속함
리스트에서 사용했던 인덱싱, 슬라이싱, 내장함수 모두 문자열에서 쓸 수 있음
문자열 내장 함수
함수 | 설명 |
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 |