Monday (12.30)
์ ๋ฐฐ์์ ๋ํ
FISA 1๊ธฐ ์ ๋ฐฐ ๋๋ถ์๊ฒ ์ง๋ฌธํ ์ ์๋ ์๊ฐ์ด ์์๊ณ , ์ฌ๋ฌ ์ง๋ฌธ๋ค์ด ์ค๊ฐ๋ค.
๊ฐ์ธ์ ์ผ๋ก ํด์ ๋ง์กฑํ๊ฒ๋ณด๋ค, ๋ชปํด์ ์์ฌ์ด๊ฑธ ์ฑ์ฐ๋๊ฒ ์ค์ํ๋ค๊ณ ์๊ฐํด์ ๋ง์ง๋ง์ "๋ชปํด์ ํํํ๊ฒ"์ ๋ํ ์ง๋ฌธ์ ๋๋ ธ๋ค.
๋ชปํด์ ํํํ๊ฒ
- ํ๋ก์ ํธ ๊ณผ์ ์์ ์ดํด์์ด ๊ธฐ์ ๋ง ์ด๊ฒ์ ๋ํ ์์ฌ์
- ์ผ์ฃผ ๋จ์๋ก ํน์ ์ผ์ด ์์๋ ์ ๋ฆฌ๋ฅผ ํ๋๋ฐ ๋งค์ผ ์ ๋ฆฌํ์ง ๋ชปํ๊ฒ์ ๋ํ ์์ฌ์
FISA๊ฐ ๋๋๊ณ ๋์๋ดค์ ๋, ์ด 2๊ฐ์ง๋ฅผ ์ ํ๋ค๋ฉด ๋ง์กฑํ ๊ณผ์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ ๊ฒ ๊ฐ๋ค.
๊ฐ๋จํ ๊ณผ์ ์ค๋ช
- AI ๋ชจ๋ธ์ ์ค์ฉ์ ์ผ๋ก ๋ค๋ฃจ๋๊ฒ์ ์ค์ ์ผ๋ก ๋ฐฐ์ด๋ค.
- ๊ธฐ๋ณธ๊ณผ์
- IT ๊ธฐ์ด 3์ฃผ๊ฐ ์ฃผ 2ํ 8์๋ฐ๋ถํฐ 2์๊ฐ
- IT ๋๋ฉ์ธ ๋น๋๋ฉด ํ ์์ผ 9~18์(2์ผ๋ถํฐ)
๊ฐ๋ก์ค์ ์์ 4๋ช ์ ํ์๋ค๊ณผ ํจ๊ป ์ ์ฌ(๊ท๋, ๋ถํ๋) ๋จน๊ณ ๊ทผ์ฒ ์ปคํผ๋น์์ ํจ๊ป ์ปคํผ๋ฅผ ๋จน์๋ค.
์ฐ๋ฆฌ FIS์ธก์์ ์ ๊ณผ๋ฅผ ํ์ํ๋ ์๋ฏธ๋ก ์ฝ์ฝํธ๋๋ฅผ ์ฃผ์ ์ ์ผ๊ธ์ผ๊ธ ๋จน์๋ค.
์ค๋์ ํฌ๊ฒ ์๋์ 3๋จ๊ณ๋ฅผ ์งํํ์๋ค.
- ํ๊ฒฝ์ค์ (ํ์ด์ฌ, ์ฌ๋, ์ฝ๋ฉ, VS code)
- Git ์ฌ์ฉ
- ๋งํฌ์ ์ธ์ด๋ฅผ ํตํ ๊นํ๋ธ ๊พธ๋ฏธ๊ธฐ์ ๊ณผ์
ํ๊ฒฝ์ค์
ํ์ด์ฌ, ์ฌ๋, ์ฝ๋ฉ, VS code์ ๋ํ ์ค๋ช ๊ณผ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ตํ๋ค.
์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์์ด ๋ณต์ตํ๋ ์ฐจ์์์ ๋ฃ๊ธฐ์ ์ ์ ํ์๋ค.
Git ์ฌ์ฉ
๊นํ๋ธ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ ๋ก์ปฌ๊ณผ ์๊ฒฉ์ ์ฐ๊ฒฐ์ ํตํด ๋ด๊ฐ ๋ก์ปฌ์์ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ์๊ฒฉ๊ณผ ๋๊ธฐํ์ํค๋ ๊ณผ์ ์ ๋ํด ๋ฐฐ์ ๋ค.
์๋ ์ฝ๋๋ค์ ์๋ฏธ์ ๋ํด์ ๋ฐฐ์๋ดค๋ค.
echo "# fisa04" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:seongjju/fisa04.git
git push -u origin main
๋งํฌ์ ์ธ์ด๋ฅผ ํตํ ๊นํ๋ธ ๊พธ๋ฏธ๊ธฐ์ ๊ณผ์
๋งํฌ์ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ณ , ์ด๋ฅผ ์์ฉํ์ฌ ๊นํ๋ธ ๊พธ๋ฏธ๊ธฐ๋ฅผ ํ๋ค.
์ฐ์ฐํ ์ด์ ํ๊ต ์น๊ตฌ์ ๊นํ๋ธ ๊พธ๋ฏธ๊ธฐ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ํ๋๋ฐ, ์ค๋ ๋ฑ ํ๊ฒ ๋์ด ์ ๊ธฐํ๋ค.
์๋๋ 1์๊ฐ๋์ ๊พธ๋ฏธ๊ฒ ๋ ๋ด ๊นํ๋ธ ์ฌ์ดํธ์ด๋ค.
Tuesday (12.31)
ํ๋ก๊ทธ๋๋ฐ์ธ์ด
- ์ ์์ค, ๊ณ ์์ค ์ธ์ด์ ์ฐจ์ด
- ์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ์ฐจ์ด
- ์ธํฐํ๋ฆฌํฐ์ REPL์ ๋ํ ์ค๋ช
- ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ๋น๋ฌธ์ ≠ ๊ณต๋ฐฑ
- ํ ์คํธ ๋ฐ์ดํฐ, ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ
- ํ์ด์ฌ๋ค์ด ์ฝ๋
- pep8์ด๋ผ๋ ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋ ์กด์ฌ
- ๋ค์ฌ์ฐ๊ธฐ ์ค์
- ์ฝ๋๊ฐ ๊ธธ๋ฉด \ ์ฌ์ฉ
- ์ฐ์ฐ์๊ฐ ๊ธธ์ด์ง๋ฉด ์ฐ์ฐ์ ์ด์ ์ ์ค๋ฐ๊ฟ
- ํจ์์ ํด๋์ค๋ ๋์ค ๋์, ํด๋์ค ์์์ ํจ์๋ ํ์ค๋ก ๊ตฌ๋ถ
- ์ด๋ฆ ๊ท์น + snake case
ํ์ด์ฌ
- ํ์ด์ฌ์ .py, .pynb ์กด์ฌ
- ํ์ด์ฌ์์ ์ ธ ์ฌ์ฉ์ ์์ ‘!’ ์ฌ์ฉ
- ๋ฉ๋ชจ๋ฆฌ์ ๋ณ์
- ๋ณ์๋ช ์ snake case ๋ฐ๋ฆ, ํน์๋ฌธ์๋ '_' ๋ง ์ฌ์ฉ, ์ซ์๋ ๋งจ ์์ ์ฌ ์ ์๋ค.
- ์์ฝ์ด๋ฅผ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉ์ ์์ฝ์ด ๋ณธ๋ ๊ธฐ๋ฅ์ด ์ฌ๋ผ์ง๋ค. del๋ก ์ง์ฐ๋ฉด๋จ
- ํ์ด์ฌ์ ํจํน, ์ธํจํน์ด ๊ฐ๋ฅํ์ฌ ์์ ๋ณ์์ธ temp๋ณ์ ์์ด ๋ณ์์ ๊ฐ ์๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ํ์ด์ฌ์ ์๋ฃํ
- ์ค์นผ๋ผ ์๋ฃํ: ์ ์, ์ค์, ๋ถ๋ฆฌ์ธ, ๋ฌธ์์ด, None
- ํ์ด์ฌ์ ๋๋์ ์ ๋๋์ด๋จ์ด์ง๋๋ผ๋ float์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- 'a' > 'A’ ์ ๊ฒฐ๊ณผ๋ True๊ฐ ๋์ค๋๋ฐ, ๋ฌธ์์ด๋ผ๋ฆฌ ๋์๋น๊ต ์ ์์คํค์ฝ๋๋ก ๋น๊ตํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ์ด์ฌ์ ์ฐ์ฐ์์ ์๊ธฐ๋ ๋ถํ์ํ์ง๋ง, not > and > or ์์์์ ์์๋๋ฉด ์ข๋ค.
- ์ปจํ
์ด๋ ์๋ฃํ: ์ํ์คํ, ๋งคํํ, ์งํฉํ ์กด์ฌ
- ์ํ์คํ: ๋ฆฌ์คํธ, ํํ, ๋ ์ธ์ง
- IndexError: list index out of range๋ฅผ ์ฃผ์ํด์ผํ๋ค.
- ๋ฌธ์์ด์ ๋ถ๋ณ์ธ ํํํ
- append vs insert
- append: ๋งจ ๋์ ์์ ์ถ๊ฐ
- insert: ์ํ๋ ์์น์ ์์ ์ฝ์
- ๋งคํํ: ๋์
๋๋ฆฌ
- dict1.get('key2', '์ฐพ๋๊ฐ์์') → ๊ฐ ์์ผ๋ฉด ‘value2’, ๊ฐ ์์ผ๋ฉด ‘์ฐพ๋๊ฐ์์’
- dict1.setdefault('key5', '์์ด์์ฝ์ ') → ์์ผ๋ฉด ์ฝ์
- ์งํฉํ: Set
- ์์๊ฐ ์๊ณ , ์ค๋ณต ๋ถ๊ฐ
- ์ํ์คํ: ๋ฆฌ์คํธ, ํํ, ๋ ์ธ์ง
- ์ค์นผ๋ผ ์๋ฃํ: ์ ์, ์ค์, ๋ถ๋ฆฌ์ธ, ๋ฌธ์์ด, None
- ์๋ฃํ์ ์ฌ์ฉํ ์ ์๋ ํจ์๊ฐ ์๊ณ ์ถ๋ค๋ฉด dir(์๋ฃํ), ํจ์์ ๋ํ ์ค๋ช ์ด ํ์ํ๋ค๋ฉด help(str.count) ์ฌ์ฉ
- ํ์ด์ฌ์ ๊ธฐ๋ณธ๋ณต์ฌ๋ ์์ ๋ณต์ฌ, ๊น์ ๋ณต์ฌ๊ฐ ํ์ํ๋ฉด copy๋ผ๋ ๋ชจ๋์ deepcopy๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ์์๋ณต์ฌ์ ๊ฒฝ์ฐ ๊ฐ๋ฆฌํค๋ ๋ณ์๊ฐ ๋ค๋ฅผ ๋ฟ, ๊ฐ๋ฆฌํค๋ ๋์์ ๋์ผ ํ๋ค.
Wednesday (01.01)
์ค๋์ ํด๋ฌด!
Thursday (01.02)
์ค๋์ ์ ์ฌ
๋ณ์ โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ
์ ๐ ๋ง ๐ ๋ถ์๊ธฐ ๐
์ค๋์ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ
์กฐ๊ฑด๋ฌธ: if๋ฌธ, match~case๋ฌธ
ํ์ด์ฌ์์ ๋นํธ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ด๋ถ์ ์ผ๋ก C๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ๋์ํ ์ ์๋ค.
๋ฐ๋ผ์, not, and, or ๋ก ์ฌ์ฉํ์
isdigit(), isdecimal(), isnumeric(), isalpha() ์ฐจ์ด
- isdigit(): ๋ชจ๋ ๋ฌธ์๊ฐ ์ซ์์ผ ๋ True
- isdecimal(): ์ญ์ง์ ์ซ์๋ง ํฌํจ๋ ๊ฒฝ์ฐ True
- isnumeric(): ์ซ์, ๋ถ์, ์ฒจ์ ์ซ์ ๋ฑ๋ ํฌํจํ์ฌ True
- isalpha(): ์ํ๋ฒณ ๋ฌธ์๋ง ํฌํจ๋ ๊ฒฝ์ฐ True
match~case๋ฌธ
match x:
case 1:
# x๊ฐ 1์ผ ๋ ์คํ
case 2:
# x๊ฐ 2์ผ ๋ ์คํ
case _:
# ๊ทธ ์ธ์ ๊ฒฝ์ฐ ์คํ
match~case๋ฌธ์์
and๋ ๊ทธ๋๋ก and๋ฅผ ์ฌ์ฉ
or๋ | (ํ์ดํ ์ฐ์ฐ์)๋ฅผ ์ฌ์ฉ
not์ ๊ทธ๋๋ก not์ ์ฌ์ฉ
*์ ๋๋จธ์ง ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํ ์ฐ์ฐ
match x:
case [a, *b]:
# x๊ฐ ๋ฆฌ์คํธ์ด๊ณ ์ฒซ ๋ฒ์งธ ๊ฐ์ a, ๋๋จธ์ง๋ b๋ผ๋ ๋ฆฌ์คํธ๋ก ํจํน
print(f"a: {a}, b: {b}")
case _:
# ๊ทธ ์ธ์ ๊ฒฝ์ฐ
print("๋ค๋ฅธ ๊ฒฝ์ฐ")
์์
lunch = input("์ ๋งค์ถ: ")
match lunch.split():
case [food] if food in ['ํผ์', 'ํ๋ฒ๊ฑฐ', '์นํจ', '๊น๋ฐฅ']:
print(f'{food}๋ฅผ ๋จน์!!')
case [food, *others] if food in ['ํผ์', 'ํ๋ฒ๊ฑฐ', '์นํจ', '๊น๋ฐฅ']:
print(f'{food}๋ฅผ ๋จน์!! ๊ฑฐ๊ธฐ๊ฐ๋ฉด {others}๋ ์์ด')
case _:
print("๋๋ค์ผ๋ก ๋ฝ์")
์ฝํ ์ถ๊ฐ
๋ชฐ๋๋ ๋ถ๋ถ
์ ์ฒด์ ์ผ๋ก ๊ฐ์ ๋ก์ง์์๋ ์๊ฐ์ด๊ณผ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ๊ธฐ๋กํ๋ค. ์ด์ ๋ ์๋์ ๊ฐ๋ค.
์ฌ๋ผ์ด์ฑ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋ ํจ์จ์ฑ ์ฐจ์ด๊ฐ ๋๋ค. ์ด์ ๋ ์ฌ๋ผ์ด์ฑ์ด ๋ฌธ์์ด ํฌ๊ธฐ๋งํผ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๊ฐ๋ณต์ก๋์ ๊ฒฝ์ฐ๋ O(n), O(n^2)์ ์ฐจ์ด๋ฅผ ์ง๋
๋ฐ๋ผ์ ๋ฌธ์์ด์ด ๊ธธ์ด์ง ๊ฒฝ์ฐ ์ฌ๋ผ์ด์ฑ์ ์์ ํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์งํฅํ์.
Friday (01.03)
์ค๋์ ์ ์ฌ
๋ณ์ โญ๏ธโญ๏ธโญ๏ธ
์ผ๋ฐ์ ์ธ ์ฐ์ก๋ฉด, ๋งํ๋๋ถ ๋ง
https://naver.me/xhz3quov
๋ฌธ์์ด
๋ฌธ์์ด ๋ฉ์๋ ๋น๊ต
- split(): ๋ฌธ์์ด์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ถ ๋ฌธ์์ด๋ก ๋๋์ด ๋ฆฌ์คํธ๋ก ๋ฐํ
- ์ถ๊ฐ๋ก text.split(sep='/',maxsplit=3) -> ๊ธฐ์ค๊ฐ, ํฌ๊ธฐ
- split()์ ๊ฐ ์์ฒด๋ฅผ ๋ฐ๊พธ์ง ์์, ๊ฐ ๋ณ๊ฒฝ์ ์ํ๋ฉด ๋ณ์์ ๋์ ํด์ผ ํจ
text = "์ฌ๊ณผ,์ค๋ ์ง,๋ฐ๋๋"
result = text.split(",")
print(result) # ์ถ๋ ฅ: ['์ฌ๊ณผ', '์ค๋ ์ง', '๋ฐ๋๋']
- replace(): ๋ฌธ์์ด์์ ํน์ ๋ถ๋ถ์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ
- prototype: text.replace(old, new[, count])
str1 = '์๋
๋๋ ์งฑ๊ตฌ ์งฑ์ ์งฑ์งฑ๋งจ ์งฑ ์๋น ์ผ'
result= str1.replace('์งฑ','ํ',3)
#'์งฑ' -> 'ํ'์ 3๋ฒ๋ง ๋ฐ๊พธ๊ณ , ๊ทธ ๋ค๋ ๊ทธ๋๋ก '์งฑ'์ด ๋์ด.
print(result) # ์ถ๋ ฅ: "์๋
๋๋ ํ๊ตฌ ํ์ ํ์งฑ๋งจ ์งฑ ์๋น ์ผ"
- strip(): ๋ฌธ์์ด์ ์๊ณผ ๋ค์์ ๊ณต๋ฐฑ(์คํ์ด์ค, ํญ, ๊ฐํ ๋ฌธ์)์ ์ ๊ฑฐ
- ์ถ๊ฐ๋ก lstrip, rstrip ์ฒ๋ผ ํ์ชฝ ๋ฐฉํฅ ๊ณต๋ฐฑ๋ง ์ง์ธ ์๋ ์๋ค.
- prototype: str.strip([chars])
text = " ์๋
ํ์ธ์ "
result = text.strip()
print(result) # ์ถ๋ ฅ: "์๋
ํ์ธ์"
- join(): iterable(๋ฆฌ์คํธ๋ ํํ ๋ฑ)์ ์์๋ค์ ์ง์ ๋ ๊ตฌ๋ถ์๋ก ํ๋์ ๋ฌธ์์ด๋ก ๊ฒฐํฉ
- prototype: str.join(iterable)
words = ['์ฌ๊ณผ', '์ค๋ ์ง', '๋ฐ๋๋']
result = ", ".join(words)
print(result) # ์ถ๋ ฅ: "์ฌ๊ณผ, ์ค๋ ์ง, ๋ฐ๋๋"
- format(): ๋ฌธ์์ด์ ๋ณ์๋ ๊ฐ์ ์ฝ์ ํ์ฌ ๋ฌธ์์ด์ ํฌ๋งทํ ํ ๋ ์ฌ์ฉ
name = "Alice"
age = 30
result = "์ ์ด๋ฆ์ {}์ด๊ณ , ๋์ด๋ {}์ด์
๋๋ค.".format(name, age)
print(result) # ์ถ๋ ฅ: "์ ์ด๋ฆ์ Alice์ด๊ณ , ๋์ด๋ 30์ด์
๋๋ค."
- find(): ๋ฌธ์์ด์์ ํน์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ฐพ์ ๋ ์ฌ์ฉ
- ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ด๋ค ์์น์ ์๋์ง ํ์ธํ๋ ๋ฐฉ์
- prototype: str.find(substring, start=0, end=len(string))
text = "hello world"
position = text.find("world")
print(position) # ์ถ๋ ฅ: 6
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ฒ ์ฌ์ฉํ๋ ค๋ฉด, ๋ฌธ์์ด์ upper() ๋๋ lower()๋ก ๋ณํํ์ฌ ์ฌ์ฉ
- ์์
- str1.upper()๋ str1 ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
- .find('ai')๋ ์ด ๋๋ฌธ์ ๋ฌธ์์ด์์ 'ai'๋ผ๋ ์๋ฌธ์ ๋ฌธ์์ด์ ์ฐพ์ผ๋ ค๊ณ ์๋
- 'IT AI AI ENGINEERING ENGINEER DEER'์๋ 'ai'๋ผ๋ ์๋ฌธ์ ๋ฌธ์์ด์ด ์์
- ์ฐพ์ ์ ์์ด์ -1์ด ๋ฐํ
str1 = 'IT AI AI Engineering Engineer deer'
str1.upper().find('ai')
์ ๋ฆฌํ๋ฉด
- split(): ๋ฌธ์์ด -> ๋ฆฌ์คํธ
- replace(): ๋ฌธ์์ด -> ๋ฌธ์์ด
- strip(): ๋ฌธ์์ด -> ๋ฌธ์์ด
- join(): iterable -> ๋ฌธ์์ด
- find(): ๋ฌธ์์ด -> ์ ์
ํจ์ ์ฒด์ด๋
- ์ฌ๋ฌ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ด์ด์ ํธ์ถํ์ฌ ํ๋์ ํํ์์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
- ํ๋์ ๋ฉ์๋ ํธ์ถ์ด ๋๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ค์ ๋ฉ์๋ ํธ์ถ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๊ณ , ์ฐ์์ ์ผ๋ก ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์ ์ฉํ๋ ๋ฐฉ์
- ์์๋๋ก ์ค๋ช ํ๋ฉด
- "apple banana cherry"์์ a๋ฅผ A๋ก ๋ฐ๊พธ์ด "Apple banana cherry"๋ฅผ ๋ฐํ
- "Apple banana cherry"์์ b๋ฅผ B๋ก ๋ฐ๊พธ์ด "Apple Banana cherry"๋ฅผ ๋ฐํ
- "Apple Banana cherry"์์ c๋ฅผ C๋ก ๋ฐ๊พธ์ด "Apple Banana Cherry"๋ฅผ ๋ฐํ
a = "apple banana cherry"
result = a.replace('a', 'A').replace('b', 'B').replace('c', 'C')
print(result) #์ถ๋ ฅ: Apple BAnAnA Cherry
์ ๊ท์
์ฝํ ํ ๋ ๊ฐ๋ ํ์ํ์๋๋ฐ, ๋น๋์ ๋นํด ์ธ์ธ๊ฒ ๋ง์์ ์ฌ์ฉํ์ง ์์์๋ค.
๋ฐ์ดํฐ ํํธ๋ก ๊ณต๋ถํ๋ฉด ๊ณ์ ์จ์ผํ๊ธฐ์, ์ด๋ฒ์ ์ ๋๋ก ๊ณต๋ถํด๋ณด๋ ค ํ๋ค.
import re
# ๋ฌธ์์ด ์์
text = "Hello, my name is John. Hello World!"
# 1. match() - ์ฒ์๋ถํฐ ์ผ์นํ๋์ง ํ์ธ
result = re.match(r'Hello', text)
print(result) # <re.Match object; span=(0, 5), match='Hello'>
# 2. search() - ๋ฌธ์์ด ์ ์ฒด์์ ์ฒซ ๋ฒ์งธ ์ผ์น ์ฐพ๊ธฐ
result = re.search(r'John', text)
print(result) # <re.Match object; span=(18, 22), match='John'>
# 3. findall() - ์ผ์นํ๋ ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด ์ฐพ๊ธฐ
result = re.findall(r'Hello', text)
print(result) # ['Hello', 'Hello']
# 4. finditer() - ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ์ผ์นํ๋ ๋ชจ๋ ๋ถ๋ถ ์ฐพ๊ธฐ
result = re.finditer(r'Hello', text)
for match in result:
print(match.group()) # Hello, Hello
# 5. sub() - ์ผ์นํ๋ ๋ถ๋ถ์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ์นํ
result = re.sub(r'Hello', 'Hi', text)
print(result) # Hi, my name is John. Hi World!
# 6. split() - ์ ๊ท์์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด ๋ถ๋ฆฌ
result = re.split(r'\\s+', text)
print(result) # ['Hello,', 'my', 'name', 'is', 'John.', 'Hello', 'World!']
์ ๊ท์ ํจํด
๊ธฐ๋ณธ ๋ฌธ์
- .: ์์์ ํ ๋ฌธ์ (์ค ๋ฐ๊ฟ ๋ฌธ์ ์ ์ธ)
- \\d: ์ซ์ (0-9)
- \\D: ์ซ์๊ฐ ์๋ ๋ฌธ์
- \\w: ๋จ์ด ๋ฌธ์ (์๋ฌธ์, ์ซ์, ๋ฐ์ค _)
- \\W: ๋จ์ด ๋ฌธ์๊ฐ ์๋ ๋ฌธ์
- \\s: ๊ณต๋ฐฑ ๋ฌธ์ (๊ณต๋ฐฑ, ํญ, ์ค ๋ฐ๊ฟ ๋ฑ)
- \\S: ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์๋ ๋ฌธ์
- \\b: ๋จ์ด ๊ฒฝ๊ณ (๋จ์ด์ ๋น ๋จ์ด ์ฌ์ด์ ๊ฒฝ๊ณ)
- \\B: ๋จ์ด ๊ฒฝ๊ณ๊ฐ ์๋ ๊ณณ
- ^: ๋ฌธ์์ด์ ์์
- $: ๋ฌธ์์ด์ ๋
๋ฌธ์ ํด๋์ค
- [abc]: a, b, c ์ค ํ๋์ ์ผ์น
- [^abc]: a, b, c๊ฐ ์๋ ๋ฌธ์์ ์ผ์น
- [a-z]: a๋ถํฐ z๊น์ง์ ์๋ฌธ์์ ์ผ์น
- [A-Z]: A๋ถํฐ Z๊น์ง์ ๋๋ฌธ์์ ์ผ์น
- [0-9]: ์ซ์์ ์ผ์น
์๋์
- : 0๋ฒ ์ด์ ๋ฐ๋ณต
- +: 1๋ฒ ์ด์ ๋ฐ๋ณต
- ?: 0๋ฒ ๋๋ 1๋ฒ
- {n}: ์ ํํ n๋ฒ ๋ฐ๋ณต
- {n,}: n๋ฒ ์ด์ ๋ฐ๋ณต
- {n,m}: n๋ฒ ์ด์ m๋ฒ ์ดํ ๋ฐ๋ณต
๊ทธ๋ฃนํ์ ์บก์ฒ
- (): ๊ดํธ ์์ ํจํด์ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ์บก์ฒ
- |: OR ์ฐ์ฐ์ (A ๋๋ B)
- (?:...): ์บก์ฒํ์ง ์๋ ๊ทธ๋ฃน
๊ทธ๋ฃจํ
()๋ฅผ ์ฌ์ฉํ์ฌ ํจํด์ ํน์ ๋ถ๋ถ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋ ๊ฒ
import re
pattern = r'(\\d+)-(\\d+)-(\\d+)'
string = '010-1111-2222'
match = re.match(pattern, string)
if match:
print(match.group(1)) # ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน: 010
print(match.group(2)) # ๋ ๋ฒ์งธ ๊ทธ๋ฃน: 1111
print(match.group(3)) # ์ธ ๋ฒ์งธ ๊ทธ๋ฃน: 2222
ํจ์
def ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์1, ๋งค๊ฐ๋ณ์2):
์คํํ ์ฝ๋
return ๋ฐํ๊ฐ
#์์
def add(a, b):
return a + b
result = add(3, 5)
print(result) # ์ถ๋ ฅ: 8
๊ฐ๋ณํจ์: ๋งค๊ฐ๋ณ์ ๊ฐฏ์๊ฐ ์ ํด์ง์ง ์์ ํจ์๋ก, '*args', '**kwargs' ์ฌ์ฉ
def value(a, b, *c): # a, b ๊ทธ์ธ ๋๋จธ์ง๋ค์ ์ธ์๋ก ๋ฐ์์
print(f'{a}&{b}, ๋๋จธ์ง {c}')
value(1, 2, 3, 4, 5, 6, 7 ) #์ถ๋ ฅ: 1&2, ๋๋จธ์ง (3, 4, 5, 6, 7)
- *args: ์์น ๊ธฐ๋ฐ ๊ฐ๋ณ ์ธ์
- ์์น ์ธ์๋ฅผ ํํ ํํ๋ก ๋ฐ์์ ์ฒ๋ฆฌ
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4)) # ์ถ๋ ฅ: 10
- **kwargs: ํค์๋ ๊ธฐ๋ฐ ๊ฐ๋ณ ์ธ์
- ํค์๋ ์ธ์๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐ์ ์ฒ๋ฆฌ
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="Alice", age=25, city="Seoul")
# ์ถ๋ ฅ
# name: Alice
# age: 25
# city: Seoul
- *args, **kwargs ํจ๊ป ์ฌ์ฉ
- ์์๋ *args -> **kwargs
def mix_args_and_kwargs(arg1, *args, **kwargs):
print(f"arg1: {arg1}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
mix_args_and_kwargs(1, 2, 3, name="Alice", age=25)
# ์ถ๋ ฅ
# arg1: 1
# args: (2, 3)
# kwargs: {'name': 'Alice', 'age': 25}
'๐ฐ์ฐ๋ฆฌ FISA > ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฐ๋ฆฌ FISA AI์์ง๋์ด๋ง 3์ฃผ์ฐจ ๊ณผ์ (0) | 2025.01.13 |
---|---|
์ฐ๋ฆฌ FISA AI์์ง๋์ด๋ง 2์ฃผ์ฐจ ๊ณผ์ (0) | 2025.01.06 |