문자열(String)
문자열 자료형은 일반적으로 따옴표 안에 들어 있으며, input() 함수를 통해 받은 데이터 또한 문자열 자료형이다.
문자열 자료형은 각각의 문자마다 좌표를 가지고 있으며, 문자열 변수의 마지막에 대괄호를 적는 것으로 사용할 수 있다.
또한 len()함수로 문자열의 길이를 반환받을 수 있다.
# 1. 한 글자 한 글자 출력하기
# while
fruit = 'banana'
index = 0
while index < len(fruit):
letter = fruit[index]
print(index, letter)
index = index = 1
# for
fruit = 'banana'
for letter in fruit:
print(letter)
# 2. 문자열 안에서 특정 글자 개수 세기
fruit = 'banana'
count = 0
for letter in word:
if letter == 'a': # a의 개수 세기
count = count + 1
print(count)
문자열 변수명의 마지막에 대괄호와 콜론(:)을 넣는 것으로 문자열을 슬라이싱 할 수 있다.
s = 'Monty Python'
# M o n t y P y t h o n
# 0 1 2 3 4 5 6 7 8 9 10 11
# 마지막 인덱스는 포함하지 않는다.
print(s[0:4]) # Mont
print(s[6:7]) # P
print(s[6:20]) # Python
# 첫 번째나 마지막 인덱스를 생략해도 된다.
print(s[:2]) # Mo
print(s[8:]) # thon
print(s[:]) # Monty Python
문자열의 연산
a = 'Hello'
b = a + 'There'
print(b) # HelloThere
c = a + ' ' + 'There'
print(c) # Hello There
fruit = 'banana'
'n' in fruit # True
'm' in fruit # False
'nan' in fruit # True
if 'a' in fruit:
print('Found it!')
문자열 비교
문자열의 비교는 보통 컴퓨터나 파이썬이 가진 문자집합에 따라 다르지만 일반적으로 사전 순서상 앞인지 뒤인지를 의미한다.
대문자 소문자의 비교는 상황에 따라 결과가 상이할 수 있다.
if word == 'banana':
print('All right, bananas.')
if word < 'banana':
print('Your word,' + word + ', comes before banana.')
elif word > 'banana':
print('Your word,' + word + ', comes after banana.')
else:
print('All right, bananas.')
문자열 자료유형은 몇 가지의 메소드를 활용해서 원하는 작업을 할 수 있다.
문자를 모두 소문자, 대문자로 만들어주는 .lower(), .upper()
하위 문자열을 문자열에서 탐색한 뒤 첫 번째로 나타나는 결과의 위치를 반환하거나 그것이 없다면 -1을 반환해주는 .find()
문자열 안의 하위 문자열을 모두 찾아 다른 문자열로 대체해주는 .replace()
공백을 스킵하는 .lstrip(), .rstrip(), .strip()
특정 문자열로 시작하는지에 대한 여부를 boolean타입으로 반환하는 .startswith()
# 소문자화, 대문자화
greet = 'Hello Bob'
zap = greet.lower()
print(zap) # hello bob
zap = greet.upper()
print(zap) # HELLO BOB
# 찾기
fruit = 'banana'
pos = fruit.find('na')
print(pos) # 2
aa = fruit.find('z')
print(aa) # -1
# 문자열 바꾸기
nstr = greet.replace('Bob', 'Jane')
print(nstr) # Hello Jane
nstr = greet.replace('o', 'X')
print(nstr) # HellX BXb
# 공백 없애기
greet = ' Hello Bob '
greet.lstrip() # 'Hello Bob '
greet.rstrip() # ' Hello Bob'
greet.strip() # 'Hello Bob'
# 특정 문자로 시작하니?
line = 'Please have a nice day'
line.startswith('P') # True
line.startswith('p') # False
조금 더 섬세한 슬라이싱 작업
data = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
atpos = data.find('@') # data 안에 있는 @의 위치는?
print(atpos) # 21
sppos = data.find(' ', atpos) # atpos 즉, 21 이후의 공백의 위치는?
print(sppos) # 31
host = data[atpos+1 : sppos] # @의 뒤 부터 공백 직전까지의 문자열
print(host) # uct.ac.za
Assignment
Assignment 6.5에서는 .find() 메서드와 문자열 슬라이싱을 사용하여 줄 끝에 있는 숫자를 추출한 뒤, 추출한 값을 float 자료형으로 변환하여 출력하는 프로그램을 작성하는 것이었다.
나의 풀이는 아래와 같다.
# ex_6_5
text = "X-DSPAM-Confidence: 0.8475"
zro = text.find('0')
print(float(text[zro:]))
'Python > PY4E' 카테고리의 다른 글
PY4E Chapter 8. Lists (0) | 2022.08.08 |
---|---|
PY4E Chapter 7. Files (0) | 2022.08.07 |
PY4E Chapter 5. Loops and Iterations (0) | 2022.08.05 |
PY4E Chapter 4. Functions (0) | 2022.08.02 |
PY4E Chapter 3. Conditional Execution (0) | 2022.08.02 |
댓글