본문 바로가기

💻 Python/🔎기초 Python

5. 문자열 가지고 놀기 (합치기, 반복, 바꾸기, 나누기, 공백 지우기, 포맷팅)

 

5. 문자열 가지고 놀기

데이터는 숫자도 많지만, 문자열이 많다.데이터 분석을 위해선 문자열 가지고 놀줄 알아야한다.

  • (1) 문자열 합치기
  • (2) 문자열 반복
  • (3) 문자열 바꾸기
  • (4) 문자열 나누기
  • (5) 공백 지우기
  • (6) 대/소문자로 바꾸기
  • (7) 문자열 포맷팅(String formatting)
  • (8) 문자열로 다시 합치기

(1) 문자열 합치기

  • '+'연산자 사용
a = "hello"
b = "world"
c = a+b
print(c)
helloworld

(2) 문자열 반복

  • '*'연산자 사용
a = "hello"
print(a*3)
hellohellohello

(3) 문자열 바꾸기

  • replace()사용
#대체한 값이 a에 반영이 안돼있다.
a = "hello world"
a.replace("world","python")
print(a.replace("world","python"))
print(a)

#주소 값이 다르다!
print(id(a)) 
print(id(a.replace("world","python")))

#반영하기 위해서는, a에 변경한 값을 할당 해줘야한다.
#주소가 같아진다.
a = a.replace("world","python")
print(a)
print(id(a)) 
hello python
hello world
2188548822704
2188548905968
hello python
2188548905968

(4) 문자열 나누기

  • str(문자열) 내장함수 split 사용
a = "A, B, C, D"
print(type(a))

#split으로 str을 나누면, list가 된다.
a.split(",")
print(a.split(","))
print(type(a.split(",")))

#replace처럼 반영이 안된다.
print(a)
print(type(a))

#a에 값을 할당해주면 된다.
a = a.split(",")
print(a)
print(type(a))
<class 'str'>
['A', ' B', ' C', ' D']
<class 'list'>
A, B, C, D
<class 'str'>
['A', ' B', ' C', ' D']
<class 'list'>
#결과를 보면 알파벳 앞에 한칸씩 공백이 생겼다!! 어떻게 하면 좋을까?
#a.split(", ") : 처음부터 공백을 포함하여 split하는 방법도 있음, 하지만 공백이 문자 앞뒤 번갈아가면서 있는 경우 적용 불가

print(a[1])
print(a[2])
print(a[3])
 B
 C
 D

(5) 공백 지우기

  • str(문자열) 내장 함수 strip,lstrip, rstrip 사용
    • 리스트(List)등 다른 데이터 타입에서는 바로 사용안됨! for문 이용하기!
#양쪽 공백 지우기 : strip
a = " B "
a = a.strip()
print(a)

#왼쪽 공백 지우기 : lstrip
a = " B"
a = a.lstrip()
print(a)

#오른쪽 공백 지우기 : rstrip
a = "B "
a = a.rstrip()
print(a)
B
B
B
a = "A, B, C, D"
print(type(a))
b = a.split(",")
print(b)
print(type(b))

#b는 list(리스트)여서 str(문자열) 내장함수인 양쪽 공백 지우기 함수(strip) 사용 불가능
#실행하면 에러발생
#print(b.strip())
<class 'str'>
['A', ' B', ' C', ' D']
<class 'list'>
#str문자열 내장함수 split를 실행한 결과값인 문자열 리스트에서 모든 문자열을 한번에 공백 지우기 하는 방법

a = "A, B, C, D"
type(a) #a는 str(문자열 타입)

b = a.split(",")
print(b)
type(b) #b는 List(리스트 타입)

c = []
type(c) #c는 List(리스트 타입)


#i는 str타입
#공백 제거한 str을 리스트c에 넣어준다.
for i in b:
    #print(i)
    #print(type(i))
    #print(i.strip())
    #print(type(i.strip()))
    c.append(i.strip())
print(c)
['A', ' B', ' C', ' D']
['A', 'B', 'C', 'D']
#List Comprehension을 통해 단 한줄로 처리할 수도 있다!!
a = "A, B, C, D"
b = a.split(",")
c = [c.strip() for c in b]
print(c)
['A', 'B', 'C', 'D']

(6) 대/소문자로 바꾸기

  • str(문자열) 내장 함수 upper()와 lower() 사용
#대문자로 바꾸기 : upper
a = "ace"
a = a.upper()
print(a)

#소문자로 바꾸기 : lower
a = "ACE"
a = a.lower()
print(a)
ACE
ace

(7) 문자열 포맷팅(string Formatting)

  • 문자열 포맷팅은 문자열을 내가 원하는대로 바꾸는 것을 의미
#기본적으로 간단하게 문자열과 변수를 같이 출력하는 방법 : print함수에 문자열과 변수를 ,로 구분
language = "python"
print("hello",language,"hello",language)

#문자열 출력 방법 : 편한 것으로 사용하기!
print("{}".format(4/3))
print(f"{4/3}")
hello python hello python
1.3333333333333333
#소수점 자리수를 지정해주는 방법은?
print(f"{4/3}")

#소수점 둘째 자리까지
print(f"{4/3:.2f}")

#소수점 셋째 자리까지
print(f"{4/3:.3f}")
1.3333333333333333
1.33
1.333
#정수에 원하는 칸만큼 패딩주기
#패딩(Padding)은 컨텐츠 안쪽의 여백을 의미

print(f"{12}")

#네자리 만들어주기 (나머지 두자리는 0으로 채워진다)
print(f"{12:04d}")

#여섯자리 만들어주기 (나머지 네자리는 빈칸으로 채워진다)
print(f"{12:6d}")

#세자리 만들어주기 (나머지 한자리는 오른쪽에 *로 채워주기)
print(f"{12:*<3}")

#다섯자리 만들어주기 (나머지 두자리는 왼쪽에 *로 채워주기)
print(f"{12:*>5}")
12
0012
    12
12*
***12

(8) 문자열로 다시 합치기

  • 문자열을 가공하면서, 다른 자료형으로 변환된 경우 다시 문자열로 바꾸는 방법
  • join함수를 이용한 리스트를 문자열로 합치기 (''안에 뭘 넣느냐에 따라 출력결과 달라진다.)
    • ''.join(a) : 공백 없이 출력 , '.'join(a) : .을 넣어 출력 (''안에 뭘 넣느냐에 따라 출력결과 달라진다.)
    • a에는 리스트 뿐 만아니라 튜플이나 딕셔너리 자료형이 들어갈 수 있다. (딕셔너리 자료형을 넣으면 키가 결합된 결과가 출력된다.)
#a = “Peace begins with a smile.” 일 때, 
#해당 변수의 문자열을 거꾸로 출력해보시오. (결과 예시: “.elims a htiwsnigeb ecaeP”)

a ="Peace begins with a smile."
b = list(a)

c = []
for i in range(len(a)-1,-1,-1):
    c += b[i]

result=''.join(c)

print(result)