๐Ÿฐ์šฐ๋ฆฌ FISA/ํ›„๊ธฐ

์šฐ๋ฆฌ FISA AI์—”์ง€๋‹ˆ์–ด๋ง 1์ฃผ์ฐจ ๊ณผ์ •

๊ณ„๋ž€์†Œ๋…„ 2024. 12. 30. 18:30

Monday (12.30)

 

์„ ๋ฐฐ์™€์˜ ๋Œ€ํ™”

 

FISA 1๊ธฐ ์„ ๋ฐฐ ๋‘๋ถ„์—๊ฒŒ ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๊ณ , ์—ฌ๋Ÿฌ ์งˆ๋ฌธ๋“ค์ด ์˜ค๊ฐ”๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ํ•ด์„œ ๋งŒ์กฑํ•œ๊ฒƒ๋ณด๋‹ค, ๋ชปํ•ด์„œ ์•„์‰ฌ์šด๊ฑธ ์ฑ„์šฐ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ๋งˆ์ง€๋ง‰์— "๋ชปํ•ด์„œ ํ›„ํšŒํ•œ๊ฒƒ"์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ๋“œ๋ ธ๋‹ค.

 

๋ชปํ•ด์„œ ํ›„ํšŒํ•œ๊ฒƒ

  1. ํ”„๋กœ์ ํŠธ ๊ณผ์ •์—์„œ ์ดํ•ด์—†์ด ๊ธฐ์ˆ ๋งŒ ์“ด๊ฒƒ์— ๋Œ€ํ•œ ์•„์‰ฌ์›€
  2. ์ผ์ฃผ ๋‹จ์œ„๋กœ ํŠน์ •์ผ์ด ์žˆ์„๋•Œ ์ •๋ฆฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ๋งค์ผ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ•œ๊ฒƒ์— ๋Œ€ํ•œ ์•„์‰ฌ์›€

FISA๊ฐ€ ๋๋‚˜๊ณ  ๋Œ์•„๋ดค์„ ๋•Œ, ์ด 2๊ฐ€์ง€๋ฅผ ์ž˜ ํ–ˆ๋‹ค๋ฉด ๋งŒ์กฑํ•œ ๊ณผ์ •์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ฐ„๋‹จํ•œ ๊ณผ์ •์„ค๋ช…

  • AI ๋ชจ๋ธ์„ ์‹ค์šฉ์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š”๊ฒƒ์„ ์ค‘์ ์œผ๋กœ ๋ฐฐ์šด๋‹ค.
  • ๊ธฐ๋ณธ๊ณผ์ •
  • IT ๊ธฐ์ดˆ 3์ฃผ๊ฐ„ ์ฃผ 2ํšŒ 8์‹œ๋ฐ˜๋ถ€ํ„ฐ 2์‹œ๊ฐ„
  • IT ๋„๋ฉ”์ธ ๋น„๋Œ€๋ฉด ํ† ์š”์ผ 9~18์‹œ(2์ผ๋ถ€ํ„ฐ)

 

๊ฐ€๋กœ์ค„์— ์•‰์€ 4๋ช…์˜ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ์ ์‹ฌ(๊ทœ๋™, ๋ถ€ํƒ€๋™) ๋จน๊ณ  ๊ทผ์ฒ˜ ์ปคํ”ผ๋นˆ์—์„œ ํ•จ๊ป˜ ์ปคํ”ผ๋ฅผ ๋จน์—ˆ๋‹ค.

์šฐ๋ฆฌ FIS์ธก์—์„œ ์ž…๊ณผ๋ฅผ ํ™˜์˜ํ•˜๋Š” ์˜๋ฏธ๋กœ ์ฝ”์ฝ”ํ˜ธ๋„๋ฅผ ์ฃผ์…”์„œ ์•ผ๊ธˆ์•ผ๊ธˆ ๋จน์—ˆ๋‹ค.

๋”๋ณด๊ธฐ

 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ใ…œใ…œ

์˜ค๋Š˜์€ ํฌ๊ฒŒ ์•„๋ž˜์˜ 3๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

  1. ํ™˜๊ฒฝ์„ค์ •(ํŒŒ์ด์ฌ, ์Šฌ๋ž™, ์ฝ”๋žฉ, VS code)
  2. Git ์‚ฌ์šฉ
  3. ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ํ†ตํ•œ ๊นƒํ—ˆ๋ธŒ ๊พธ๋ฏธ๊ธฐ์˜ ๊ณผ์ •

 

ํ™˜๊ฒฝ์„ค์ •

ํŒŒ์ด์ฌ, ์Šฌ๋ž™, ์ฝ”๋žฉ, 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์‹œ๊ฐ„๋™์•ˆ ๊พธ๋ฏธ๊ฒŒ ๋œ ๋‚ด ๊นƒํ—ˆ๋ธŒ ์‚ฌ์ดํŠธ์ด๋‹ค.

 

https://github.com/seongjju

 

seongjju - Overview

seongjju has 10 repositories available. Follow their code on GitHub.

github.com

 


 

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
        • ์ˆœ์„œ๊ฐ€ ์—†๊ณ , ์ค‘๋ณต ๋ถˆ๊ฐ€
  • ์ž๋ฃŒํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๊ฐ€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด dir(์ž๋ฃŒํ˜•), ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด help(str.count) ์‚ฌ์šฉ
  • ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ๋ณต์‚ฌ๋Š” ์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด copy๋ผ๋Š” ๋ชจ๋“ˆ์˜ deepcopy๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ์–•์€๋ณต์‚ฌ์˜ ๊ฒฝ์šฐ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅผ ๋ฟ, ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์€ ๋™์ผ ํ•˜๋‹ค.

 


Wednesday (01.01)

 

์˜ค๋Š˜์€ ํœด๋ฌด!

 


Thursday (01.02)

๋”๋ณด๊ธฐ

์˜ค๋Š˜์˜ ์ ์‹ฌ

 

๋ณ„์  โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ

์–‘ ๐Ÿ‘ ๋ง› ๐Ÿ‘ ๋ถ„์œ„๊ธฐ ๐Ÿ‘

https://naver.me/5oX1yCS5

 

๋„ค์ด๋ฒ„ ์ง€๋„

์‹๋ฝ

map.naver.com

 

 

์˜ค๋Š˜์€ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ

์กฐ๊ฑด๋ฌธ: 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

 

๋„ค์ด๋ฒ„ ์ง€๋„

์ƒค์˜ค๋ฐ”์˜ค ์ƒ์•”์ 

map.naver.com

 

ํŒ€์›๋ถ„์ด ๋Œ€์‹  ์ฐ์–ด ์ฃผ์…จ๋‹ค ใ…Žใ…Ž

 

 

๋ฌธ์ž์—ด

 

๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ ๋น„๊ต

  • 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}