[Python] 문자열(2)

[Python] 문자열(2)

<문자열 인덱싱>

인덱싱이랑 글자위치를 찾는다는것입니다.

a = "Hi, every" 이 있다. 이걸 인덱싱을하면

""이것은 제외하고 H부터 0이 시작이된다.

H = 0

i = 1

, = 2

공백 = 3

e = 4

v = 5

e = 6

r = 7

y = 8

이런식으로 차례대로 순번이 정해집니다.

내가 Hi, every 에 4번째에 머가있는지 궁금하면

print(a[4]) 작성하면 e가 출력이됩니다.

바로 조금 깊게 들어가봅시다.

만약 print(a[0:4]) 를 작성해보자 어떻게 출력이될까? 답은 "Hi," 가 출력이된다.

왜그럴까? 도대체 :이게 멀까 ? : 이것은 까지라는 뜻이다.

즉 0부터 4까지라는 뜻이다. 근데 4면 e도 출력되어야하는거아니예요?? 하는데

요기서 까지는 미만이라는 뜻이다. 즉 4는 포함이안된다. (0~3)까지 출력을 합니다.

그래서 "Hi," 이렇게 출력이됩니다.

근데!!

좀더 편하게 작성하기 위해 0은 생략할수가 있습니다.

print(a[:4]) 작성하면 print(a[0:4]) = print(a[:4])랑 같은 뜻입니다.

만약 every 만 출력하고싶으면

a[4:9]를 작성하면 된다. 하지만 이것도 더간결하게 가능합니다.

실질적인 의미는 4부터 8까지 출력합니다.

4 -> e 로시작해서

8 -> y 까지 출력합니다.

a[4:]를 작성하면 4부터 문자끝까지 출력한다는뜻으로 a[4:9]랑 같습니다.

반대로 every의 y를 출력하고싶은데

hi, every에서 언제 하나하나씩 0,1,2,3 이런씩으로 셀것인가 그럴필요가없습니다.

바로 -1 을 하면 뒤에서부터 출력을합니다.

a[-1]하면 y가 출력이된다.

이부분은 다양하게 실습하길 바랍니다.

<문자열 슬라이싱>

a = "hi, everyone" 가 있다.

근데 내가 hi 랑 everyone랑 따로 출력을 하고싶다.

b = a[:4] 를사용하면 "hi," 출력되는값을 b에 넣습니다

c = a[4:] 를 사용하면 "everyone"이 출력되는값을 c에 넣습니다.

print(b) 하면 hi, 이것이 출력이 될것이고

print(c) 하면 everyone이 출력이 됩니다.

물론 [:4]에 0이 생략되어있다는것을 볼수가 있습니다.

<문자열 Replace>

replace = 교체하다, 바꾸다뜻입니다.

your을 wour이라 했다. 한번 바꿔보자

(방법1)

a = "wour"

a = a.replace("w","y")

print(a)

a = "wour"

a = a.replace("w","y")

print(a)

작성하면 your 이 출력이됩니다..

(방법2)

a = "wour"

print("y"+a[1:])

a = "wour"

print("y"+a[1:])

작성하면 똑같이 your이 출력이됩니다..

(의문점)

a = "wour"

a[0] = "y"

print(a)

작성하면 안됩니까?? 넵! 오류가 납니다.

그이유는 : 문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문입니다.

<포맷 format​>

포맷이란 값을 지속적으로 바꾸어야할때 쓰면 좋다고만 생각하면 될것같습니다.

예를들어

AM11:00 온도가 25도

PM:13:00 온도가 30도

PM:16:00 온도가 22도

이런씩으로 바뀐다 가정하면

현재시간마다 현재온도를 출력할려고할때

11시 라 가정하면

print("현재 시간 현재 온도는 25도입니다.")

13시 라 가정하면

print("현재 시간 현재 온도는 30도입니다.")

일일히 작성하는것이 귀찮다. 이럴때 포맷을 사용해서

temperature = 25 ※temperature 기온,온도라는 뜻인데 temperature로 정의할필요없이 a = 25라고 해도됩니다.

print("현재 시간 현재 온도는 {}도 입니다".format(temperautre))

이라 작성하면 "현재 시간 현재 온도는 25도 입니다" 로 출력이됩니다.

그러면 이제 13:00 가되서 temperature = 25에 숫자를 30으로만 바꾸면 출력에도 숫자가 30으로 바뀝니다.

#현재 시간이 11시라 가정

a = 25

print("현재 시간 현재 온도는 {}입니다".format(a))

#현재 시간이 13시라 가정

a = 30

print("현재 시간 현재 온도는 {}입니다".format(a))

근데 포맷방법이 더있습니다.

print("현재 시간 현재 온도는 %s 도입니다." % 25) 라 작성하면

"현재 시간 현재 온도는 25도 입니다." 로 출력되고 마찬가지로 뒤에 숫자 25를 30으로 바꾸면 숫자만 바뀝니다.

print("현재 시간 현재 온도는 %s도 입니다." % 25)

자 요기서 원래는

%s = 문자열

%c = 문자열1개

%d = 정수

%f = 부동 소수

주로 사용되는것만 외워놓으면 좋습니다.. 작성한것처럼 원래는 %d로 숫자(25)니깐 사용해야하는데 저는 %s로 작성했습니다.

그 이유는 저도 배울때 %s로 모든게 된다해서 작성했다. %s로 작성하면 모든게 해결이됩니다.

즉석으로 포맷도 가능합니다.

print("현재 시간 현재 온도는 {0}​도입니다.".format(25)

print("현재 시간 현재 온도는 {0}도 입니다.".format(25))

또한 포맷을 2개값을 출력할수 있는데

a = 25

b = 30

print("현재 온도는 {0}도 이고, 13:00에는 {1}도 로 예상이됩니다.".format(a,b))

작성하면 format(a는 {0}에 포함이되고 format(b 는 {1}에 포함이됩니다.

즉 현재 온도는 25도 이고, 13:00에는 30도로 예상이 됩니다. 가 출력이 될것입니다.

a = 25

b = 30

print("현재온도는 {0}도 이고, 13:00에는 {1}도 로 예상이됩니다.".format(a,b))

1.f값으로 포맷(format) 하기

print(f"hi %s bye %s​​" %("everyone","people"))

결과값: hi everyone bye people 이 출력이된다. everyone 이 첫번째{}안에 들어가고 people이 두번째{}들어가는것을 볼수가있습니다.

2.딕셔너리로 포맷(format) 하기

a = {"name":"xBe", "hobby":"coding"}

print(f"내 이름은 {a['name']} 이고, 취미는 {a['hobby'}] 이다.")

결과값: 내 이름은 xBe 이고, 취미는 coding 입니다.

3.문자 개수 세기

명령문 : ​count

a = "application"

a = a.count("p")

print(a)

결과값: 2 가나옵니다.

그 이유는 p가 application에 2개가 있기 때문에 결과값으로 2가 나왔습니다.

4. 문자 위치 알려주기

명령문 : find , index

a = "application"

a = a.find("p")

print(a)

결과값 : 1이 나옵니다.. p는 2개인데 왜 1이 나왔을까? 문자열0부터 시작해서 순차적으로올라가는데 1번째(p)에서 찾았기 떄문에 1이 나왔습니다.

a = "application"

a = a.index("l")

print(a)

결과값: 3이 나온다. 이유는 find 랑 같습니다.

그럼 find 랑 index 차이는 무엇일까?

find 는 만약 내가 application 에 z를 찾고싶어서 z를 find 했다. 그럼 없는 문자열로 -1이 나옵니다.

index 는 마찬가지로 application에 z를 찾고싶어서 z를 index 하면 오류가 발생합니다.

5. 문자열 소문자/ 대문자 바꾸기

소문자 .lower

대문자 .upper

Hi! My name is xBe 문장이 있다. 가정하에 대소문자를 출력해보자

<대문자>

방법이 2가지가 있습니다.

방법1.

a = "Hi! My name is xBe"

a = a.upper()

print(a)

방법2.

a = "Hi! My name is xBe"

print(a.upper())

<소문자>

방법1.

a = "Hi! My name is xBe"

a = a.lower()

print(a)

방법2.

a = "Hi! My name is xBe"

print(a.lower())

2개다 같은 값을 출력하지만 방법2 사용하는것이 좀더 간결하고 깔끔해 보입니다.

6. 문자열 공백 지우기

a = " hi " 가 있다. 이렇게 출력하면 공백을 띄우고 hi가 출력이됩니다..

<왼쪽 공백 지우기>

.lstrip

print(a.lstrip()) 을 사용하면 왼쪽 공백을 모두 지운다.

<오른쪽 공백 지우기>

.rstrip

print(a.rstrip()) 을 사용하면 오른쪽 공백을 모두 지운다.

<양쪽 공백 지우기>

.strip

print(a.strip()) 을 사용하면 양쪽 공백을 모두 지운다.

7. 문자열 바꾸기

.replace

replace는 앞에 배웠지만 한번더 복습할겸 배워봅시다.

replace는 바꾸다 ,교체하다는 뜻입니다.

a = "python is good"

a = a.replace("python", "java")

print(a)

를 하면 python 이 java로 문자가 바뀝니다.

다음 내용부터는 print문​을 생략하고 설명하겠습니다.

from http://gbri-it.tistory.com/34 by ccl(A) rewrite - 2021-10-08 01:27:32