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)
'💻 Python > 🔎기초 Python' 카테고리의 다른 글
7. 리스트(List) 심화 (추가, 삽입, 정렬, Stack, Queue) (0) | 2022.08.08 |
---|---|
6. 함수 가지고 놀기 (온도 변환 함수, 여러개 인풋 아웃풋, 기본값 설정) (0) | 2022.08.08 |
4. 함수란 무엇인가 (내장 함수, 사용자 정의 함수) (0) | 2022.08.07 |
3. 파이썬 프로그래밍의 기본 구조(연산자, 조건문, 반복문) (0) | 2022.08.07 |
2. 시퀀스 데이터 타입 (List, Tuple, range) (0) | 2022.08.07 |