파이썬 표준 출력과 문자열
1. print 함수
print(*args, sep=' ', end='\n', file=None, flush=False)
args : 임의의 갯수의 arguments를 받음 (*positional arguments)
sep=' ' : 출력 대상 사이의 구분자를 넣을 때 사용 (default : space)
end='\n' : 마지막 문자열을 출력하고 출력할 문자에 end를 사용 (default : '\n')
file : file-like object (스트림 / 출력방향) 지정 , (default : None) --> sys.stdout
flush : 강제로 스트림을 flush 할건지 (default : False)
2. 문자열을 만드는 방법
1) 큰 따옴표로 둘러싸기
2) 작은 따옴표로 둘러싸기
3) 큰 따옴표 3개를 연속으로 써서 둘러싸기 (여러줄인 경우)
4) 작은 따옴표 3개를 연속으로 써서 둘러싸기 (여러줄인 경우)###
3. 따옴표를 포함한 문자열
문자열 안에 작은 따옴표를 사용하는 경우
큰 따옴표안에 작은 따옴표 사용
작은 따옴표 안에 작은 따옴표를 사용하려면 ' 사용
"Python is 'interpreted' programming language"
'Python is 'interpreted' programming language'
문자열 안에 큰 따옴표를 사용하는 경우
작은 따옴표 안에 큰 따옴표 사용
큰 따옴표 안에 큰 따옴표를 사용하려면 " 사용
'Python is "interpreted" programming language'
"Python is "interpreted" programming language"
4. 확장 문자 (이스케이프 코드)
', "
\
\a, \b, \f, \n, \t, \v
\124 : 8진수 확장 문자(8진수 124)
\x0A : 16진수 확장 문자
5. 문자열 연산
더하기
head = "python" tail = " is no jam" print(head + tail) 결과 : python is no jam
빼기
head = "python" print(head * 2) 결과 : pythonpython
문자열 길이 구하기
a = "Life is too short" print(len(a)) result : 17
문자열 인덱싱
a = "Life is too short" print(a[3]) res : 'e' a[-1] res : 't' -1은 뒤에서부터 첫번째라는 의미이다. 헷갈리지 말자. a[1]은 앞에서 두번째이지만, a[-1]은 뒤에서 첫번째이다. a[0] == a[-0] res : TRUE a[0:4] res : "Life" a[0:3] res : "Lif" --> 인덱싱 끝 번호는 포함하지 않는다. 0:3은 0,1,2만 포함 a[10:] --> 시작번호부터 끝까지 a[:17] --> 처음부터 16까지 출력 a[:] --> 처음부터 끝까지 a = "Life is too short, You need Python" a[19:-7] res : 'You need'
문자열의 요솟값은 바꿀 수 없다
a = "pithon" a[1] = 'y' (error) 문자열의 요솟값은 바꿀 수 없다.
6. 문자열 formatting
- 문자열 안에 어떤 값을 삽입하는 방법
1. 숫자 바로 대입 "I eat %d apples." % 3 res : 'I eat 3 apples.' 2. 문자열 바로 대입 "I eat %s apples." % "five" 3. 변수 대입 number = 5 "I eat %d apples." % number 4. 2개 이상의 값을 넣기 number = 10 day = "three" "I ate %d apples. so I was sick for %s days" % (number, day) 정수를 %s 로 받으면 string type 이고, %d가 되면 integer type 이다 문자열 안에 %를 사용하려면 %%를 사용하면 된다. 5. 딕셔너리 Key 대입 prof_dict = {'name' : 'Kim', 'room_no': 327, 2023: True} "My name is %(name)s and my room is %(room_no)04d" % prof_dict # 327 --> 0327
format code와 숫자 사용
"%10s" % "hi" res: ' hi' ---> 전체 길이가 10인 문자열에서 오른쪽 정렬하고 나머지는 공백으로 "%-10s" % "hi" res: 'hi ' ---> 전체 길이가 10인 문자열에서 왼쪽 정렬하고 나머지는 공백으로
소수점 표현
"%0.4f" % 3.42134234 res : 3.4213 --> 4개의 소숫점만 출력해라라는 의미이다. "%10.4f" % 3.42134234 res : ' 3.4213' --> w전체 길이가 10인 문자열에서 오른쪽 정렬하고, 나머지 공백처리, 소숫점은 4개까지 표시.
7. format 함수를 사용한 formatting
숫자 바로 대입
"I eat {0} apples".format(3)
문자열 바로 대입
"I eat {0} apples".format("five")
숫자 변수 대입
number = 3 "I eat {0} apples".format(number)
두 개 이상의 값 넣기
number = 10 day = three "I ate {0} apples. so I was sick for {1} days.".format(number, day) --> {0}, {1}과 같은 인덱스 항목이 format 함수의 입력 값으로 바뀜. "My name is {} and my room is {}".format('choi', 327)
이름으로 넣기
"I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
인덱스 + 이름 혼용
"I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
딕셔너리를 가져와 언패킹
prof_dict = {'name' : 'Kim', 'room_no': 327, 2023: True} "My name is {name} and my room is {room_no:04d}".format(**prof_dict) # 327 -> 0327
- **매개변수 는 정확히는 매개변수로 dictionary를 받아 unpacking 하는 것을 의미
왼쪽 정렬
"{0:<10}".format("hi") --> <10 표현식은 치환되는 문자열을 왼쪽으로 정렬, 문자열의 자릿수를 10으로 맞춘다.
오른쪽 정렬
"{0:>10}".format("hi") --> >10 표현식은 치환되는 문자열을 오른쪽으로 정렬, 문자열의 자릿수를 10으로 맞춘다.
가운데 정렬
"{0:^10}".format("hi") --> ^10 표현식은 치환되는 문자열을 가운데 정렬, 문자열의 자리수를 10으로 맞춘다.
공백 채우기
"{0:=^10}".format("hi") res : "====hi====" ---> :와 {<, >, ^} 사이에 공백을 채울 문자를 넣으면 공백 문자 대신에 해당 문자로 채워넣는다. "{0:!<10}".format("hi") res : "hi!!!!!!!!"
소수점 표현하기
y = 3.42134234 "{0:0.4f}".format(y) --> {0}에서 0 뒤에 0.4f를 사용하여 소수점 4자리만 표현 "{0:10.4f}".format(y) --> 자릿수를 10으로 맞추고 오른쪽 정렬, 소수점 4자리만 표현
{ 또는 } 문자 표현하기
"{{ and }}".format() --> 중괄호 문자 그대로 사용하고 싶으면 중괄호를 두번 연속 사용하면 된다.
8. f 문자열 포매팅 (python 3.6이상 가능)
기본적인 사용법
문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 사용 가능.
name = '홍길동' age = 30 f'나의 이름은 {name} 입니다. 나이는 {age} 입니다.'
표현식도 사용 가능하다. (변수끼리의 수식)
f'나는 내년이면 {age + 1}살이 된다.'
딕셔너리도 사용 가능하다.
d = {'name':'홍길동', 'age':30} f'나의 이름은 {d["name"]} 입니다. 나이는 {d["age"]} 입니다.'
f 포매팅 정렬
f'{"hi":<10}' f'{"hi":>10}' f'{"hi":^10}'
f 포매팅 공백 채우기
f'{"hi":=^10}' f'{"hi":!<10}'
f 포매팅 소수 표현
y = 3.42134234 f'{y:0.4f}' f'{y:10.4f}'
f 포매팅 중괄호 표현
* f 포매팅 중괄호 표현 f'{{ and }}'
9. 문자열과 관련된 함수
특정 문자의 개수 세기 (count 함수)
a = "hobby" a.count('b') res : 2 --> 문자열중 매개변수 안에 있는 문자의 갯수를 return
위치 알려주기1 (find 함수)
a = "python is the best choice" a.find('b') res : 14 ---> 문자열 b가 처음 나온 위치를 리턴한다. a.find('k') res : -1 ---> 문자열에 없으면 -1을 반환한다.
위치 알려주기2 (index 함수)
a = "Life is too short" a.index('t') res : 8 ---> 문자 t가 처음나온 위치를 반환 find와 차이점이라면 없는 문자를 찾으려 하면 오류를 발생시킨다.
endswith / startswith 함수
line.endswith('.') --> line이 {argument}로 끝나면 True / 아니면 False 반환 line.startswith('.') --> line이 {argument}로 시작하면 True / 아니면 False
문자열 삽입(join 함수)
",".join('abcd') res : 'a,b,c,d' ---> abcd 문자열의 각각 문자 사이에 ,를 삽입한다.
ex) 리스트에서 사용
",".join(['a', 'b', 'c', 'd'])
res : 'a,b,c,d'
* 소문자를 대문자로 바꾸기(upper 함수)
```python
a = "hi"
a.upper()
res : 'HI'
대문자를 소문자로 바꾸기(lower)
a = "HI" a.lower() res : hi
왼쪽 공백 지우기(lstrip 함수)
a = " hi " a.lstrip() res : 'hi '
오른쪽 공백 지우기(rstrip 함수)
a = " hi " a.rstrip() res : ' hi'
양쪽 공백 지우기(strip)
a = " hi " a.strip() res : 'hi'
strip(parameter)
full_name = '\t Soo Lee \n' full_name.strip() # 'L=SOO Lee' full_name.strip('\t\n') # ' Soo Lee ' full_name.lstrip() # 'Soo Lee \n' full_name.rstrip() # '\t Soo Lee'
문자열 바꾸기 (replace 함수)
a = "Life is too short" a.replace("Life", "Your leg") res : 'Your leg is too short' --> replace(바뀌게 될 문자열, 바꿀 문자열)
문자열 나누기(split 함수)
a = "Life is too short" a.split() // 공백을 기준으로 문자열 나눔 res : ['Life', 'is', 'too', 'short'] b = "a:b:c:d" b.split(':') // :를 기준으로 문자열 나눔 res : ['a', 'b', 'c', 'd'] prof = 'choi, 327, 1' prof.split(',') # ['choi', ' 327', ' 1'] prof.split(', ) # ['choi', '327', '1']
문자열 나누기(partition 함수)
prof = 'choi, 327, 1' prof.partition(', ') # ('choi', ', ', '327, 1')
- C++에서 std::strtok 함수와 유사
- partion 함수의 매개변수를 기준으로 문자열을 나눈다
문자열 \n을 기준으로 나누기(splitlines 함수)
profs = 'choi, 327, 1\nKang, 328, 1' profs.splitlines() # ['choi, 327, 1', 'Kang, 328 ,1']
참조) Do it! 점프 투 파이썬 (박응용 지음), https://wikidocs.net (파이썬 계단밟기)
'Programming Language > Python' 카테고리의 다른 글
[Python] 06. 집합(set) 자료형 (0) | 2023.11.05 |
---|---|
[Python] 05. 튜플(Tuple) 자료형 (0) | 2023.11.04 |
[Python] 04. 리스트(list) 자료형 (0) | 2023.11.04 |
[Python] 02. 변수의 선언과 자료형, 연산 (0) | 2023.11.04 |
[Python] 01. Introduction (0) | 2023.11.01 |