on
[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