별의별 이야기

string methods 본문

3./Python

string methods

Hailey Han 2024. 12. 24. 13:06
728x90

string methods

method이기 때문에 만드시 점(.)을 사용해서 연결해야 함. 
문자열에서 사용하는 methods

특이한거:
.join(): list를 문자열 형태로 바꿔줌.  <-> .split(): 문자열을 list로 변환한다.
is 가 붙어있는 methods 들은 결과가 true or false 이다.

join: list를 문자열로

join을 만들 때 = ' ' . join(a) 식으로 빈칸을 설정해주어야 함.

#''에 공백이 없을 때 
a=['1','2','h','a','n','d','o','n','g']
result1 = ''.join(a)
print(result1) #띄어쓰기가 된 채로 출력

result2=result1.split()
print(result2) #출력: ['12handong']

#''에 공백이 있을 때
a=['1','2','h','a','n','d','o','n','g']
result1 = ' '.join(a)
print(result1) #출력:1 2 h a n d o n g

result2=result1.split()
print(result2) #['1', '2', 'h', 'a', 'n', 'd', 'o', 'n', 'g']

isalpha() : 알파벳을 물어보는 method
isdigit(): 숫자를 물어보는 method
islower(): 모든 요소가 소문자이면 true인 method
isupper(): 모든 요소가 대문자이면 true인 method : string에 써도 됨.
isspace(): 모든 요소가 공백이면 true인 method:

#isspace 예제
s1="hello python"

for char in s1:
    if char.isspace():
        print("true")
    else:
        print("false")

=> if 다음에 나오는 말이 모두 수식일 필요는 없다.

replace(): 해당 문자를 변경 문자로 바꾸어줌. 문자열.replace('검색문자','변경문자')

feel='im so happy'
result = feel.replace('so','not')
print(result)

swapcase(): 대문자는 소문자로, 소문자는 대문자로 바꿔줌.
.upper(): 

함수를 이용해서 만들수도있다.

.find(): 찾는 문자가 있으면 index 반환, 없으면 -1을 반환. false를 반환한다고 생각하면 안됨.

s = 'abcd cdef def gh'
if s.find('d')==-1: 
    print("찾는 문자가 없음")
else: 
    print(s.find('d'))
if s.find('f')==-1: 
    print("찾는 문자가 없음")
else: 
    print(s.find('f'))
if s.find('i')==-1:
    print("찾는 문자가 없음")
else: 
    print(s.find('i'))

문자열 연습문제 풀기

#문자열 연습문제 
#영문으로 구성된 문자열 입력받고, 전체 개수, 소문자 개수 값 출력
#method: islower(소문자파악용 method)
#혼자풀기
word=input("input word: ")
result=len(word)
result2=word.islower()
#어떻게 소문자 개수를 출력하지???? 

print(result) 
print(result2)

#같이풀기
str=input("input word: ")
count=0 #count 변수만들기!!! 
alcount =0 #전체 글자 수를 읽을 변수하나 추가

for i in str: #(문자단위로 읽어오기)
    alcount +=1
    if i.islower(): 
        count +=1
print(f"전체문자의 수: {alcount}, 소문자의 수: {count}")

***주의

#1
print(f"전체문자의 수: {alcount}, ", end= "," ) #줄바꿈 기호를 enter로 하지 말고 컴마(,)로 해라
print(f"소문자의 수: {count}")
      
#2
print(f"전체문자의 수: {alcount}", f "소문자의 수: {count}") #space가 무조건 출력 됨. 

#3
print(f"전체문자의 수: {alcount}", f "소문자의 수: {count}", sep-"\n") #space를 줄바꿈으로 바꾸겠다.
###spe=""에 대하여
print(str, restr,sep="\n") 
#1. 원래는 빈공백이 들어갔는데 내가바꾸고싶은 문자(줄바꿈\n)으로 바뀌어짐

print(str, restr,sep="")
#2. 공백이 없어진다는 의미.

print(str)
print(restr)
#3. print를 두번서서 줄바꿈이 일어남.

print(str, end=',')
print(restr)
#4. 원래는 줄바꿈이 일어나야하는데 컴마(,)로 구별되서 나타난다.

연습문제2

#연습문제2
# 영문 소문자로 구성된 문자열을 입력받고, 모음은 모두 대문자로 출력
# 혼자풀기
str=input("input word: ")
for i in range(1,str+1): 
    i.upper() and i.capitalize()
print(i) 

#같이풀기
str=input("Enter string: ") #문자열 입력받기
restr="" #새롭게 변경될 문자열이 저장될 변수

for i in str: #str에서 문자 읽어오겠다.
    if i in 'aeiou': #만약 str 문자열에 모음 있으면
        restr+=i.upper() #대문자로 바꿔 restr에 저장해줘 => restr=restr+ch.upper()
    else: 
        restr+=i #아니면 그냥 저장해줘 

print(str, restr,sep="\n")  #원래는 빈공백이 들어갔는데 내가바꾸고싶은 문자(줄바꿈\n)으로 바뀌어짐

연습문제3 

###연습문제3
#문자열 입력받고, 첫 글자 대문자 나머지 소문자로 저장 및 출력, 첫글자와 나머지 글자 나누어 출력
#먼저 첫글자를 대문자로 바꿔야겠다? 반대로 생각하기. 
#문자열 전체를 소문자로 바꾸는 method (lower) -> .capitalize 
#혼자풀기
str=input("Enter string: ") #문자열 입력받기
restr=0 #첫글자
for i in str: 
        str[0] = restr
        restr.upper() 
        str.lower() 

print(restr,str,sep="\n") 

#같이풀기
str=input("Enter string: ") #문자열 입력받기
print(str.lower().capitalize())
print(f"첫 번째 문자: {str[0]}",f"나머지 문자: {str[1:]}", sep='\n')

연습문제4

###연습문제4 
#문자열 입력, 대->소, 소->대로 바꾸어 출력, 바꾼 후 대문자 개수, 소문자 개수, 대소문자가 아닌 문자개수 출력
#혼자풀기
str=input("Enter string: ") #문자열 입력받기
str= str.lower()
str2= str.upper()
str3=len(str)
print(str, str2, str3,sep='\n')

#2
str=input("Enter string: ") #문자열 입력받기
str=str.swapcase()
print(str, len(str), sep='\n')
# => 대문자, 소문자, 대소문자가 아닌 개수는 어떻게 각각 출력하지?

#같이풀기
str=input("Enter string: ") #문자열 입력받기
str=str.swapcase()
#여기서 대문자 몇개, 소문자 몇개, 대소문자 아닌거 몇개인지 하나씩 읽어오기
countUpper, countLower, countElse = 0,0,0

for i in str: 
    if i.isupper(): 
        countUpper +=1 
    elif i.islower(): 
        countLower +=1 
    else: 
        countElse +=1 

print("변경된 문자열", str)
print(f"대문자 수: {countUpper}\n소문자 수: {countLower}\n대소문자가 아닌 문자수: {countElse}")

.startswith()

시작할 때 문자열의 시작이 내가 지정한 문자/문자열과 같은지 판단하는 method

.endswith()

끝의 형태가 내가 원하는(지정한) 형태인지 판단하는 method

연습문제5

#연습문제5
#이름을 영문으로 받음. 'k' or 'ch''park'으로 시작하는 이름인지 확인, 'young'으로 끝나는지 확인
#혼자풀기 
#1
# name=input("Enter your name: ")
# print(name.startswith('k' or 'ch' or 'park'))
# print(name.endswith('young'))

#2
name=input("Enter your name: ")
if name.startswith ('k' or 'ch' or 'park'): 
    print("앞에만 맞습니다.")
    if name.endswith('young'):
        print('뒤에만 맞습니다.')
else: 
    print('no')
    if name.endswith('young'): 
        print('뒤에만 맞습니다. ')
#나는 동시에 풀려고 했던 것 같음.

#같이풀기
str=input("Enter name: ")
if str.startswith(('k','ch','park')): #얘네를 전체로 묶어서 넘겨야 한꺼번에 parameter로 넘길 수 있음.
# 또는 str.startswith('k') or str.startswith('ch'), str.startswith('park')로 표현 가능
    print(str,", k, ch, park으로 시작")
else: 
    print(str,", k, ch, park으로 시작하지 않습니다")

if str.endswith('young'):
    print(str,", young으로 시작")
else: 
    print(str,", young으로 시작하지 않습니다")

퀴즈

 

 1~10까지 for 문 사용해서 합을 구하기 문제
코드 동작 결과 (마지막 숫자에도 컴마(,)를 꼭 찍어야하는게 답!(유의하기)
"""000"""는 주석처리를 의미해서 오류는 아님. ""000"" 가 확실한 오류이다.

#퀴즈 문제. 
str=input("문자열을 입력하시오: ")
for ch in range(len(str), -1,-1): #?????
    print(str[ch], end="") #한줄로 출력, [::-1]도 가능하다? 수업시간에 안한거..


연습문제6

#연습문제6
#문자열 입력, 대문자로 바꿀 문자 or 문자열 입력받기, 입력받은 문자를 대문자로 바꾸고 전체 문자열 출력 
#혼자풀기
str =input("문자열을 입력하세요: ")
restr = input("바꿀 문자열을 입력하세요: ")

for i in restr: #str에서 문자 읽어오겠다.
    if i in 'aeiou': #만약 str 문자열에 모음 있으면
        restr=i.upper() #대문자로 바꿔 restr에 저장해줘 => restr=restr+ch.upper()
    print(restr) 
###같이풀기
str =input("문자열을 입력하세요: ")
chstr = input("바꿀 문자열을 입력하세요: ")
restr = "" 
cindex=0 

#str에서 find method를 쓸 수 있느냐 문제이다.
if str.find(chstr)==-1: #-1을 반환하고 이것과 같은지를 물어봐야 함.
    print("문자열이 없습니다.")
else: 
    cindex = str.find(chstr)  # cindex 변수도 만들어줌
    restr = str[:cindex] #str to cindex까지를 새로운 문자열에 넣어줌. restr 변수도 만들어줌
    restr+= chstr.upper() #대문자로 바꾼 chstr 을 붙어넣어줌.
    restr += str[cindex+len(chstr):] #cindex부터 len(chstr)까지
print(restr) #print 까먹지말기

    # for ch in str: #반복문으로 문자를 하나씩 읽어옴
    #     if ch in chstr: #우리가 찾는 문자열에 해당하는 문자열이 있다면?

=> 콜론 의미 알기, 중간 변수 설정, index의미 알기 

JavaScript / ava
find로 찾으면 index로는 a는

'3. > Python' 카테고리의 다른 글

List  (0) 2024.12.31
내장함수, math module, 사용자 정의 함수  (0) 2024.12.30
for esle, sort, 다중 for, 문자열  (0) 2024.12.23
Day5 복습: for문  (2) 2024.12.23
for loop의 활용: range 함수, 다중 for문, break  (0) 2024.12.20