"", '' 를 사용하여 감싸준다.
str1 = "python"
str2 = """python is not difficult"""
# 작은 따음표를 사용하는 것도 가능 '', ''' '''
더하기(+) 연산으로 문자열을 붙일 수 있다.
str1 = "123"
str2 = "45"
print(str1 + str2) # 12345
인덱스 값을 이용해서 문자열을 자를 수 있다.
jumin = "990120-1234567"
print(jumin[:]) # 전부 다 출력
#990120-1234567
gender = jumin[7]
print(gender) # 7번째 요소 출력 (0부터 시작하여 7번째)
#1
year = jumin[0:2]
print(year) # 0부터 2직전까지 (2번째는 포함 안됨)
#99
month = jumin[2:4]
print(month) # 2번째 부터 4번째 직전까지
#01
day = jumin[4:6]
print(day) # 4번쨰 부터 6번째 직전까지
#20
juminPre = jumin[:6]
print(juminPre) # 6번째직전까지
#990120
juminPost = jumin[7:]
print(juminPost) # 7번째 부터 끝까지
#1234567
juminPost2 = jumin[-7:]
print(juminPost2) # 뒤에서 7번째 까지
#1234567
juminPost2 = jumin[7:-1] # 인덱스 7부터 -1까지 가져옴
print(juminPost2)
#1234567
# 인덱스 증가폭 사용하기
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
a[2:8:3] # 인덱스 2부터 3씩 증가시키면서 인덱스 7까지 가져옴
[20, 50]
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
a[:7:2] # 리스트의 처음부터 인덱스를 2씩 증가시키면서 인덱스 6까지 가져옴
# [0, 20, 40, 60]
a[::2] # 리스트 전체에서 인덱스 0부터 2씩 증가시키면서 요소를 가져옴
[0, 20, 40, 60, 80]
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
a[5:1:-1]
[50, 40, 30, 20]
range(0, 10)
list(r[:7:2])
# [0, 2, 4, 6]
# 예제출처: youtube채널 나도코딩 - 파이썬 기초, 코딩도장 파이썬
다음과 같이 시퀀스 객체의 또는 getitem 메서드에 slice 객체를 넣어주면 지정된 범위만큼 잘라내서 새 객체를 만든다.
range(10)[slice(4, 7, 2)]
range(4, 7, 2)
range(10).__getitem__(slice(4, 7, 2))
range(4, 7, 2)
# slice 객체를 하나만 만든 뒤 여러 시퀀스 객체에 사용하는 방법도 가능합니다.
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
s = slice(4, 7) # 인덱스 4부터 6까지 자르는 slice 객체 생성
a[s]
[40, 50, 60]
r = range(10)
r[s]
range(4, 7)
hello = 'Hello, world!'
hello[s]
'o, '
# 슬라이스에 사용하여 요소 할당하기
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
a[2:5] = ['a'] # 인덱스 2부터 4까지에 값 1개를 할당하여 요소의 개수가 줄어듦
[0, 10, 'a', 50, 60, 70, 80, 90]
# 튜플, range, 문자열은 슬라이스 범위를 지정하더라도 요소를 할당할 수 없습니다.
출처: 코딩도장 파이썬 (https://dojang.io/mod/page/view.php?id=2208)
str1= "파이썬 공부중 %d일째" %3 #정수
print(str1)
str2 = "%s 공부중 3일째" %"파이썬" #문자열
print(str2)
str3 = "파이썬의 아이콘 모양은 %c 모양이다" %"뱀" #캐릭터
print(str3)
# 복수의 파라미터 값을 출력하고 싶을 때
str1= "파이썬 공부중 %d일째이며, %s 부분을 공부하고 있습니다." %(3, "문자열")
print(str1)
#파이썬 공부중 3일째이며, 문자열 부분을 공부하고 있습니다.
tr1 = "{0}을 공부하고 있으며, {1}일차 입니다." .format("파이썬", 4)
print(str1) # 파이썬을 공부하고 있으며, 4일차 입니다.
str2 = "{lang}을 공부하고 있으며, {days}일차 입니다." .format(lang="Python", days=4)
print(str2) # 파이썬을 공부하고 있으며, 4일차 입니다.
# Python 3.6+ 에서는 "" 앞에 f 를 사용하여 간단하게 formatting 할 수 있다.
lang = "Python"
days = 4
str3 = f"{lang}을 공부하고 있으며, {days}일차 입니다."
print(str3) # 파이썬을 공부하고 있으며, 4일차 입니다.
이스케이프 문자 | 설명 |
---|---|
\n | 줄바꿈 |
\ | 문자열 내에서 \ 로 취급 |
\' | 문자열 내에서 ' 로 취급 |
\" | 문자열 내에서 " 로 취급 |
\r | 커서를 맨 앞으로 이동 (공백문자 포함한 문자열을 가장 앞으로 가져와서 대체) |
\b | 백스페이스. 한 글자를 삭제하는데, 가장 끝의 글자는 삭제하지 않음 |
\t | 탭 |
str.replace("바꿀 문자열", "새문자열")
trans = str.maketrans("바꿀 문자", "새문자")
str.translate(trans)
'apple pear grape pineapple orange'.split()
['apple', 'pear', 'grape', 'pineapple', 'orange']
' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple pear grape pineapple orange'
', python.'.lstrip(',.') - 왼쪽의 특정 문자 삭제
', python.'.rstrip(',.') - 오른쪽의 특정 문자 삭제
', python.'.strip(',.') - 양 옆 특정 문자 삭제
import string
', python.'.strip(string.punctuation) - 문자열 양쪽의 모든 구두점을 삭제
' python'
# string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
', python.'.strip(string.punctuation + ' ')
'python'
# 체이닝
', python.'.strip(string.punctuation).strip()
'python'
'python'.ljust(10)
'python '
'python'.center(10)
' python '
"35".zfill(4)
"0035"
"apple pineapple".find("pl)
2
"apple pineapple".find("xy)
-1
제목 | 제목 |
---|---|
%s | 문자열 |
%d | 숫자 |
%f | 숫자 (소숫점) 기본적으로 소수점 이하 6자리까지 |
%.자릿수f | 숫자 자릿수 지정 |
%10s | %뒤에 숫자를 붙이면, 문자열을 길이로 만든 뒤, 오른쪽 정렬하고 남는 공간을 공백으로 |
r"" | 문자열 앞에 r 또는 R을 붙이면 raw 문자열이 된다. 이스케이프 시퀀스를 그대로 저장할 때 사용된다. |
'%10s' % 'python'
' python'
'%10d' % 150
' 150'
'%10d' % 15000
' 15000'
'%-10s' % 'python'
'python '
문제1. 다음 문장에서 the 가 몇 번 포함되는지
line = """
the grown-
ups' response, this time, was to advise me to lay aside my drawings of
boa constrictors, whether from the inside or the outside, and devote
myself instead to geography, history, arithmetic, and grammar.
That is why, at the, age of six, I gave up what might have been a
magnificent career as a painter. I had been disheartened by the failure of
my Drawing Number One and my Drawing Number Two. Grown-ups never understand
anything by themselves, and it is tiresome for children to be always and
forever explaining things to the."""
line_list = line.split(" ")
c = 0
for l in line_list:
if l.strip(",.") == "the":
c = c + 1
print(c)
문제2. 다음 숫자열을 크기가 큰 순서대로 오른쪽 정렬하고, 남는 공간은 공백으로 채워서 출력
num_list = "51900;83000;158000;367500;250000;59200;128500;1304000"
test = list(map(int, num_list.split(";")))
test.sort(reverse=True)
for i in test:
print(format(i, ">9,"))
# 출력 결과
1,304,000
367,500
250,000
158,000
128,500
83,000
59,200
51,900
그 외 출력 연습 문제
# print("python", "Java", "JavaScript", sep=" vs ", end="?")
# 출력 결과
python vs Java vs JavaScript?
import sys
print("python", "java", file=sys.stdout)
print("python", "java", file=sys.stderr)
# 3자리마다 , 를 찍어서 출력 (money format)
print("{0:,}" .format(9718239871))
print("{0:+,}" .format(9718239871))
print("{0:+,}" .format(-9718239871))
print("{0:^<+30,}" .format(12394294))
print("{0: >10}" .format(500))
# 실행 결과
500
print("{0: <+10}" .format(500))
print("{0: <+10}" .format(-500))
print("{0:_<+10}" .format(100))
print("{0:_<+10}" .format(-100))
# 소숫점 출력
# print("{0:f}" .format(5/3))
# print("{0:.2f}" .format(5/3))
출처