본문 바로가기

파이썬 프로그래밍/파이썬 기초

[Python] 파이썬 문자열, 문자열인덱싱 기초 개념잡기 (기본 예제위주)

개념

슬라이스(Slice)
말그대로 원하는 문자를 잘라낼때 사용
슬라이스를 하는 방법은 여러가지가 있으며 예제를 통하여 슬라이스를 익혀보도록 하겠습니다.



문자열의 기본

예제1)

* 사용

Hello World에서 Hello World 2번 출력하기


1
2
Result_str = 'Hello world'
print(Result_str * 2)
cs

출력

Hello worldHello world


예제2)

문자열끼리 연결

a = Hello, b = world로 선언한 후 두개의 변수를 합쳐 Hello world를 출력해라

1
2
3
= 'Hello '
= 'world'
print(a+b)
cs

출력

Hello world


문자열 인덱싱

Hello My nick name is rednooby <-를 가지고 하겠습니다.

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

현재 문자열을 출력하면 이런식으로 문자열의 주소값이 나오게 됩니다.

Hello에서H = 0, e = 1, l = 2, l = 3, o = 4 를 가지게 되는것입니다.

이것을 가지고 여러가지 응용을 할수 있는데 아래 문제를 보면서 확인해 보겠습니다.


예제1)

문자열 인덱싱 확인해보기

위에 있는 Hello My nick name is rednooby 가 정말 0번~4번째까지 무엇이 들어가있는지 확인하기 위한 예제입니다.

1
2
3
4
5
6
7
= 'Hello My nick name is rednooby'
 
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
cs

출력



예제2)

-를 사용하여 뒤에부터 문자를 출력할 수 있습니다
-를 사용하여 rednooby를 차례대로 출력해보시오

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

1
2
3
4
5
6
7
8
9
10
= 'Hello My nick name is rednooby'
 
print(a[-8])
print(a[-7])
print(a[-6])
print(a[-5])
print(a[-4])
print(a[-3])
print(a[-2])
print(a[-1])
cs

출력


예제3)

앞에있는 Hello를 한줄로 출력해보시오

[a:b]를 통하여 a이상~b미만까지의 문자를 출력할 수 있습니다.

주의! a는 포함하여 이상이지만 b는 포함하지 않는 미만입니다. 

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 


1
2
3
= 'Hello My nick name is rednooby'
 
print(a[0:5])
cs

출력



예제4)

Hello부터 출력하여 보시오

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 


1
2
3
4
5
= 'Hello My nick name is rednooby'
 
print(a[0:])
print(a[:30])
print(a[:])
cs
[0:] 0부터
[:30] 30까지
[:]모든 문자 출력
둘다 사용해도 무방합니다.

출력




예제5)

My name is rednooby를 출력하시오(Hello, nick 제외)

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

1
2
3
4
= 'Hello My nick name is rednooby'
 
print(a[6:8],a[14:30])
print(a[6:9]+a[14:30])
cs
여기서 알수 있는 ,와 +의 차이.
,는 자동으로 공백을 추가해주지만 +는 그대로 문자를 출력하기 때문에 차이가 납니다.
[6:8] vs [6:9]


출력


예제6)

rednooby를 chonooby로 바꿀수 있을까?

 

 M

 

 

 

 

o

 0

10

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

1
2
3
= 'Hello My nick name is rednooby'
a[14:30]= 'chonooby'
print(a[:])
cs

정답은 No 안됩니다.


왜 안되는걸까?

파이썬은 문자 모두를 객체로 생각하고 있으며, 임의의 메모리를 가리키는 것이기 때문에 직접적으로 수정할 수 없습니다. C에서는 간편하게 수정이 가능하지만 파이썬에서는 글자를 임의의 메모리에 있는 것을 가리키는 것이기 때문에 수정이 불가능 한것입니다.

출력


만약에 바꾸고 싶다면?

1
2
= 'Hello My nick name is rednooby'
print(a.replace("rednooby","chonooby"))
cs

replace를 통하여 (바꾸고싶은문자,바꿀문자)로 선언해주면 바꿀 수 있습니다.


출력



문자열 응용

예제1)

문자의 개수 세기 (count)
o의 개수가 몇개인지 출력해보시오
1
2
= 'Hello My nick name is rednooby'
print(a.count('o'))
cs

변수명.count('문자')

를 해주면 해당 문자가 몇개인지 카운트할 수 있습니다.


출력



예제2)

문자가 어디에 위치하고 있는지 찾아보기 (find)
o가 어디에 있는지 찾아보시오
1
2
= 'Hello My nick name is rednooby'
print(a.find('o'))
cs
변수명.find('찾을문자')
를 사용하면 됩니다.
주의할점은 문자가 중복될시 가장 먼저있는 문자만 찾아주는 점입니다.

출력



예제3)

대문자와 소문자의 변환 (upper, lower)
1. 모두 대문자로 변환
2. 모두 소문자로 변환
1
2
3
= 'Hello My nick name is rednooby'
print(a.upper())
print(a.lower())
cs

출력



예제4)

문자열 나누기 (split)
1. 문자열을 띄어쓰기마다 나눠서 출력하시오
2. 문자열이 o가 나올때마다 나눠서 출력하시오
1
2
3
= 'Hello My nick name is rednooby'
print(a.split())
print(a.split('o'))
cs


출력

여기서 알수있는 사실

문자를 입력하면 문자를 기준으로 해당 문자를 제외하고 나누는 것을 확인하였습니다.