⚙️ 정규식
📌 정규식
- 정규식이란? : 텍스트 문자열을 어떤 패턴으로 파악하여 식별하는데 사용된다.
- 파이썬의 정규식 라이브러리
import re
패턴 |
설명 |
예제 |
* |
기호 바로 앞의 패턴이 0개 이상이어야 한다. |
\d* : 숫자가 없거나 하나 이상이어야 한다. |
+ |
기호 바로 앞의 패턴이 1개 이상이어야 한다. |
\d+ : 숫자가 하나 이상이어야 한다. |
[문자들] |
[문자들]에 포함된 문자들 중 하나여야 한다. |
[Pp]ython : "Python" or "python" |
() |
괄호 안의 정규식을 하위 표현식 그룹으로 만들어 준다. |
|
. |
\n을 제외한 모든 문자 |
.{3} : 문자 3개 (예: F15, 0x0) |
^ |
기호 바로 뒤의 패턴으로 문자열이 시작해야 한다. |
^abc : abc로 시작해야 한다. (예: abcd) |
$ |
기호 바로 앞의 패턴으로 문자열이 끝나야 한다. |
xyz$ : xyz로 끝나야 한다. (예: 123xyz) |
[^문자들] |
[문자들]에 포함되지 않은 문자들 중 하나여야 한다. |
[^aieou] : 소문자 모음이 아닌 문자들 |
패턴{n} |
패턴이 n번 반복한다. |
\d{3} : 숫자가 3개 있어야 한다. |
패턴{n,m} |
패턴이 최소 n번, 최대 m번 반복한다. |
\d{3,5} : 숫자가 3, 4개 또는 5개 있어야 한다. |
| |
두 패턴 중 하나여야 한다. (OR 기능) |
a|b : a 또는 b여야 한다. |
[^] |
[] 안에 있는 문자를 제외한 문자가 나타난다. |
|
? |
기호 바로 앞의 패턴이 없거나 하나여야 한다. |
\d? : 숫자가 하나 있거나 없어야 한다. |
\d |
숫자 0~9 ([0-9]와 동일) |
\d\d\d : 0~9 범위의 숫자 3개 |
\D |
비숫자 ([^0-9]와 동일) |
|
\w |
문자 |
\w\w\w : 문자 3개 |
\s |
화이트 스페이스(공백), [\t\n\r\f]와 동일하다. |
\s\s : 화이트 스페이스 문자 2개 (\r\n, \t\t) |
- 정규식에 관한 메서드
- match() : 문자열의 처음부터 정규식과 매치되는지를 검색한다.
- search() : 문자열 전체를 검색하여 정규식과 매치되는지를 검색한다.
- findall() : 정규식과 매치되는 모든 문자열을 리스트로 리턴한다.
- finditer() : 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 리턴한다.
⚙️ Pandas
📌 Pandas 기타 키워드
- sep : 값과 값 사이를 어떠한 문자로 구별할지에 대한 옵션
data=pd.read_csv(path, sep=",")
- header : csv 파일의 첫번째 줄을 칼럼명으로 사용할지에 대한 옵션
data=pd.read_csv(path, sep=",", header=None)
- skiprows : 몇 개의 행을 생략하고 파일을 읽을지에 대한 옵션
data=pd.read_csv(path, sep=",", header=None, skiprows=1)
⚙️ Data Handling
📌 Excel 데이터 조작
- pd.read_excel(path,sheet_name) : 경로상에 존재하는 엑셀 파일의 시트를 가져온다.
path = "/content/07_surveys_excelformat.xls"
data = pd.read_excel(path,sheet_name="Sheet1")
- data.to_excel(path) : 데이터를 엑셀 파일로 변환하여 지정된 경로에 공유한다.
data.to_excel("../ASAC/test.xlsx", index=False)
📌 JSON
- JSON이란? : 서로 다른 SW서비스, 프로그램 사이에서 데이터를 주고 받을 때 사용하는 데이터 양식
- 파이썬의 JSON 라이브러리
import json
⚙️ 실습
📝 JSON 데이터 조작하기
💡 사용할 데이터
json_data2 = """{
"id" : "0001",
"type" : "donut",
"name" : "Cake",
"ppu" : 0.55,
"groups" : {
"group" : [
{"id":"1001", "type":"Regular"},
{"id":"1002", "type":"Choco"},
{"id":"1003", "type":"Cream"}
]
},
"topping" : [
{"id":"5001", "type":"None"},
{"id":"5002", "type":"Sugar"},
{"id":"5003", "type":"Choco"}
]
}
"""
result = json.loads(json_data2)
💡 데이터의 id 값 구하기
result["id"]
💡 데이터의 topping 항목 중 맨 처음 정보 구하기
result["topping"][0]
💡 데이터 중에서 2번째 group의 type 구하기
result["groups"]["group"][1]["type"]
📝 API 사용하기
💡 kobis 영화목록 Open API 사용
import pandas as pd
import urllib.request
import json
url_p1 = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.json"
key = "API 키"
url_p2 = "40"
url = url_p1 + "?key=" + key + "&itemPerPage=" + url_p2
movie_page = urllib.request.urlopen(url)
data = json.loads(movie_page.read().decode("utf-8"))
💡 영화목록 데이터에서 영화코드, 영화이름, 영화이름(영문), 개봉년도, 감독정보를 출력하기
movie = data["movieListResult"]["movieList"]
for item in movie:
print(item["movieCd"], item["movieNm"], item["movieNmEn"], item["prdtYear"], end=" ")
if(len(item["directors"]) >= 1):
print(item["directors"][0]["peopleNm"])
else:
print("No Director")
print()