[Python]2. 문자열

UkiUkhui·2022년 2월 27일
0

파이썬잘하고싶다

목록 보기
2/19

문자열

string1 = 'Some text'
string2 = "어떤 텍스트"
string3 = '{}도 {}도 지금 이것도 문자열'.format(string1, string2)
 
print(string1, string2, string3)
  • 큰 따옴표 / 작은 따옴표 중 무엇을 사용하던 상관 없음. 단지, 여닫을 때 같은 것만 사용하면 됨.
  • 오류 발생 : quote가 3개 이상 사용될 경우.
quote = 'say "a!"'
emphasize = "'b!' says"
error = "said "c!"" #오류

- 문자열 여러줄로 만들기

long_string = '''first
second'''
print(long_string)
  • ''' 사용 하면 문자열 내부에서 여러줄이 들어가는 문자열 생성 가능.
  • ''' 사용 하면 내부에서 ', " 사용 시 헷갈리지 않고 오류도 없음.
a = ''' say ' and "!'''

1. 문자열 시퀀스

[] 사용 : 한 번에 한 문자씩 접근 가능함

a = 'banana'
print(a[0]) # b 출력

i = 1
print(a[i+1]) # n 출력
  • 인덱스는 0부터 시작

2. len

print(len(a)) # 6 출력
  • 문자열에서 문자들의 개수 반환

3. For 루프로 순회

  • 순회 : 순차적으로 문자열의 문자 하나씩 처리하는 법
i = 0

#while문 이용하기
while i < len(a):
	letter = a[i]
    print(letter)
    i = i+1
    
#for 이용하기
for letter in a:
	print(letter)
  • for 문의 경우, 루프를 돌 때마다 다음 문자가 letter에 할당됨

3.1. 예시

pre = 'JKLMNOPQ'
suffix = 'ack'

for letter in pre:
	print(letter + suffix)

결과값

4. 문자열 슬라이스

  • 슬라이스(slice, 조각) : 문자열의 한 부분
s = 'Monthly Python'

print(s[0:6])
print(s[6:12])
print(s[3:])
print(s[:4])
print(s[:])

[n:m] : 문자열의 n부터 m-1까지 출력됨

5. 문자열은 불변(immutable)

s[0] = 'K' # error!

new_s = 'K' + s[1:]
print(new_s) #Konthly Python 출력

6. 문자열 검색

def find(word, letter):
	index = 0
    while index < len(word):
    	if word[index] == letter :
        	return word
        index = index + 1 # 해당 문자 찾을 때까지 
    return -1
  • 찾고자 하는 문자가 나올 때까지 loop
  • 해당 문자를 찾으면 해당 문자 출력 후 함수 종료
  • 문자를 찾지 못한 경우 -1 반환

7. 루프 돌기와 세기

word = 'tomato'
count = 0
for i in word :
	if i == 't' :
    	count = count + 1
print(count) # 2 출력
  • 문자열에서 해당 문자가 나타난 횟수 세기

8. 문자열 메서드

word = 'tomato'
new_word = word.upper() #TOMATO

호출(invocation) : 메서드 호출(call)

  • word 에서 upper() 호출
i = word.find('t') # 0 출력

find('찾고자 하는 문자') : 해당 문자가 위치한 첫번째 인덱스만 반환

print(word.find('t', 3)) # 4 출력
print(word.find('t', 1, 2)) # -1 출력
  • 지정 범위 내 해당 문자 없으면 실패 : -1 출력

두 번째 인수 : 선택인수(optional argument)로 찾기를 시작할 위치
세 번째 인수 : 찾기를 중단할 위치

9. in 연산자

in : 첫 번째 문자열이 두 번째 문자열의 부분 문자열이면 True 반환

'a' in 'train' # true

def in_both(a,b):
    for i in a:
        if i in b:
            print(i)

print(in_both('apples', 'oranges'))

  • for each i in a, if each i in b print i : 첫 번째 문자열의 각 문자에 대해 두 번째 문자열에 해당 문자가 있다면 출력하라.

10. 문자열 역순 예제

def reverse(a,b):
    if len(a) != len(b):
        return -1
    
    i = 0
    j = len(b) - 1

    while j > 0:
        if a[i] != b[j]:
            return False
        
        i = i + 1
        j = j - 1

    return True

print(reverse('spot', 'tops'))
  • 한 단어가 다른 단어의 역순인지 판단

11. 카이사르 암호

def rotate_letter(letter, n):
    start = ord('a')
    c = ord(letter) - start
    i = chr((c+n)%26+start)
    return i

def rotate_word(word, n):
    s = ''
    for i in word:
        s += rotate_letter(i, n)
    print(s)

print(rotate_word('cheer', 7))
  • 원본 문자열에서 문자들을 정해진 크기만큼 회전하여 새 문자열을 반환

chr() : 문자를 숫자코드로 반환
ord() : 숫자를 문자코드로 반환

profile
hello world!

0개의 댓글