- CSV
- HTML
- XML
- JSON
CSV
CSV(Comma-Separated Values)는 쉼표로 구분된 텍스트 파일 형식입니다. 각 라인은 하나의 레코드를 나타내며, 쉼표로 구분된 값으로 이루어진 필드들로 구성됩니다. CSV는 데이터베이스, 스프레드시트 등에서 데이터를 전송하거나 저장하기 위해 많이 사용되는 일반적인 파일 형식입니다.
Python은 표준 라이브러리인 csv 모듈을 제공하여 CSV 파일을 읽고 쓰는 기능을 제공합니다. 이 모듈은 파이썬에서 CSV 데이터를 처리하는 데 사용할 수 있는 다양한 도구를 제공합니다. csv 모듈을 사용하여 CSV 파일을 읽는 방법은 다음과 같습니다.
import csv
with open('file.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
위 코드에서는 'file.csv' 파일을 읽고, csv.reader() 함수를 사용하여 파일의 내용을 읽어옵니다. csv.reader() 함수는 각 라인을 읽어 ','를 기준으로 분할하여 리스트로 반환합니다. 이 리스트는 CSV 파일에서 각 필드에 해당하는 값들을 포함합니다. 그리고 각 라인을 순회하면서 이러한 리스트를 출력합니다.
반대로, CSV 파일을 쓰는 방법은 다음과 같습니다.
import csv
with open('file.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 25, 'Female'])
writer.writerow(['Bob', 30, 'Male'])
위 코드에서는 'file.csv' 파일을 열고, csv.writer() 함수를 사용하여 파일에 데이터를 씁니다. csv.writer() 함수는 ','로 구분된 값을 작성할 수 있는 객체를 반환합니다. 이러한 객체를 사용하여 각 라인에 해당하는 데이터를 작성합니다. 이 예제에서는 먼저 첫 번째 라인에 해당하는 필드 이름들을 작성한 다음, 다음 두 라인에 해당하는 데이터를 작성하고 있습니다. 주의할 점은 newline='' 옵션을 지정하여 줄바꿈 문자를 자동으로 삽입하지 않도록 해야합니다.
Web
웹(Web)은 World Wide Web(국제 정보망)의 줄임말로, 인터넷을 통해 전 세계적으로 연결된 컴퓨터 네트워크입니다. 웹은 정보를 검색하고 공유하기 위해 만들어졌으며, 이를 위해 다양한 프로토콜과 기술들이 사용됩니다.
웹이 동작하는 방식은 크게 두 가지로 나눌 수 있습니다.
- 클라이언트-서버 모델
- 웹은 클라이언트-서버 모델을 사용합니다. 클라이언트는 웹 브라우저를 통해 서버에 요청(Request)을 보내고, 서버는 요청에 따라 적절한 응답(Response)을 보냅니다. 이때 요청과 응답은 HTTP(HyperText Transfer Protocol) 프로토콜을 사용합니다.
- HTML, CSS, JavaScript 등의 기술
- 웹 페이지는 HTML(HyperText Markup Language)로 작성되며, CSS(Cascading Style Sheets)와 JavaScript 등의 기술을 사용하여 디자인과 동적인 기능을 추가합니다. 웹 페이지는 웹 브라우저에서 렌더링(Rendering)되어 사용자에게 표시됩니다.
일반적으로 웹 페이지를 요청하면 다음과 같은 과정을 거칩니다.
- 사용자가 웹 브라우저를 통해 웹 페이지를 요청합니다.
- 웹 브라우저는 URL(Uniform Resource Locator)을 해석하여 요청(Request)을 생성합니다.
- 요청(Request)은 인터넷을 통해 서버로 전송됩니다.
- 서버는 요청(Request)을 받고, 요청에 대한 적절한 응답(Response)을 생성합니다.
- 응답(Response)은 인터넷을 통해 웹 브라우저로 전송됩니다.
- 웹 브라우저는 응답(Response)을 받아서 웹 페이지를 렌더링(Rendering)하여 사용자에게 표시합니다.
HTML
HTML은 Hyper Text Markup Language의 약자로, 웹 페이지를 작성하기 위해 사용되는 마크업 언어입니다. HTML은 일련의 태그(tag)로 이루어져 있으며, 이 태그들은 각각의 역할과 의미를 가지고 있습니다.
HTML 문서는 일반적으로 아래와 같은 구조로 이루어져 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>웹 페이지 제목</title>
<!-- 웹 페이지의 메타 데이터, 스타일 시트, 스크립트 등을 포함합니다. -->
</head>
<body>
<!-- 웹 페이지의 콘텐츠를 포함합니다. -->
</body>
</html>
- <!DOCTYPE html>: HTML 문서의 버전을 지정합니다. 이것은 HTML5에서는 필수가 아니지만, 문서의 버전을 명시하는 것이 좋습니다.
- <html>: HTML 문서의 루트 요소입니다. 모든 요소는 이 태그 안에 작성되어야 합니다.
- <head>: HTML 문서의 메타 데이터를 포함하는 태그입니다. 예를 들어, 웹 페이지의 제목, 스타일 시트, 스크립트 등을 여기에 작성합니다.
- <title>: 웹 페이지의 제목을 나타내는 태그입니다. 브라우저의 탭에 표시됩니다.
- <body>: HTML 문서의 콘텐츠를 포함하는 태그입니다. 예를 들어, 텍스트, 이미지, 비디오 등을 여기에 작성합니다.
또한 HTML은 요소(element)와 속성(attribute)으로 구성됩니다. 예를 들어, <img> 요소는 src 속성으로 이미지의 URL을 지정합니다. 요소는 여는 태그(<tag>)와 닫는 태그(</tag>)로 구성됩니다. 닫는 태그가 없는 요소도 있습니다. 이러한 요소는 빈 요소(empty element)라고 하며, <br>이나 <img> 등이 있습니다.
정규식
- . (마침표)
- 어떤 문자 하나와 매치됩니다. 단, 줄바꿈 문자(\n)를 제외한 모든 문자와 매치됩니다.
- [] (대괄호)
- 대괄호 안에 포함된 문자 중 하나와 매치됩니다.
- 예를 들어, [abc]는 a, b, c 중 하나와 매치됩니다.
- [^] (대괄호 안에서 ^ 기호)
- 대괄호 안에 ^ 기호를 사용하면 해당 문자를 제외한 문자 중 하나와 매치됩니다.
- 예를 들어, [^abc]는 a, b, c를 제외한 다른 문자 중 하나와 매치됩니다.
- *(별)
- 바로 앞의 문자가 0번 이상 반복됨을 의미합니다.
- 예를 들어, a*는 a가 0번 이상 반복되는 문자열과 매치됩니다.
-
- +
- 바로 앞의 문자가 1번 이상 반복됨을 의미합니다.
- 예를 들어, a+는 a가 1번 이상 반복되는 문자열과 매치됩니다.
- ? (물음표)
- 바로 앞의 문자가 0 또는 1번 나타남을 의미합니다.
- 예를 들어, ab?c는 a 다음에 b가 0 또는 1번 나타나고, 그 뒤에 c가 나오는 문자열과 매치됩니다.
- {m,n} (중괄호)
- 바로 앞의 문자가 m번 이상, n번 이하로 반복됨을 의미합니다.
- 예를 들어, a{2,3}는 a가 2번 또는 3번 반복되는 문자열과 매치됩니다.
- | (파이프)
- OR 연산을 의미합니다.
- 예를 들어, a|b는 a 또는 b 중 하나와 매치됩니다.
- () (괄호)
- 괄호 안에 있는 정규식을 그룹으로 묶어서 처리합니다.
- 예를 들어, (abc)+는 abc가 1번 이상 반복되는 문자열과 매치됩니다.
위의 메타 문자 외에도 \와 같은 이스케이프 문자를 사용하여 일반 문자열로서 해석되게 할 수 있습니다.
ex) 전화번호 정규식
^\d{3}\-\d{4}\-\d{4}$
- ^ : 문자열의 시작을 의미합니다.
- \d : 0부터 9까지의 숫자를 의미합니다.
- {3} : 앞의 문자 또는 패턴이 3번 반복됨을 의미합니다.
- - : 하이픈(-) 문자를 의미합니다.
- $ : 문자열의 끝을 의미합니다.
XML
XML은 eXtensible Markup Language의 약자로, 데이터를 구조화하고 저장하기 위한 마크업 언어입니다. HTML과 유사하지만, HTML이 웹페이지를 만들기 위한 마크업 언어라면, XML은 데이터를 저장하고 교환하기 위한 마크업 언어입니다.
XML은 다음과 같은 특징을 가지고 있습니다.
- 태그를 이용하여 데이터를 구조화하고 저장합니다.
- 태그는 시작 태그와 종료 태그로 구성되며, 데이터는 태그와 태그 사이에 위치합니다.
- 태그의 이름은 개발자가 임의로 정할 수 있으며, 속성을 추가하여 더 많은 정보를 표현할 수 있습니다.
- XML은 데이터를 계층적으로 구조화할 수 있으며, 이를 이용하여 다양한 형태의 데이터를 표현할 수 있습니다.
- XML은 웹기반 서비스에서 데이터 교환의 표준으로 많이 사용되고 있습니다.
- 이기종간 정보를 주고받기 유용하다.
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="fiction">
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
<book category="non-fiction">
<title>The Elements of Style</title>
<author>William Strunk Jr.</author>
<author>E. B. White</author>
<year>1918</year>
</book>
</books>
위 예시는 책 정보를 구조화하여 저장한 것입니다. books는 루트 요소로, 그 아래에 book 요소들이 존재합니다. book 요소는 category 속성을 가지며, 그 아래에 title, author, year 요소들이 존재합니다.
이 예시에서 <?xml version="1.0" encoding="UTF-8"?>는 XML 파일의 버전과 인코딩을 나타냅니다. books 요소는 루트 요소로, 모든 XML 파일은 하나의 루트 요소를 가져야 합니다. book 요소는 책 정보를 저장하며, category 속성은 책의 카테고리를 나타냅니다. title, author, year 요소들은 각각 책의 제목, 작가, 출판 연도를 나타냅니다.
파이썬에서 XML parsing
BeautifulSoup
BeautifulSoup은 HTML 및 XML 문서를 파싱하고 분석하기 위한 파이썬 라이브러리입니다. HTML 및 XML 문서를 분석하는 것은 웹 스크래핑, 데이터 마이닝 등의 작업에서 매우 중요합니다.
BeautifulSoup은 웹 스크래핑에서 자주 사용되는 라이브러리 중 하나이며, 파이썬에서 HTML 및 XML을 처리하는 데 사용되는 표준 라이브러리인 xml과 html 모듈의 단점을 보완합니다. BeautifulSoup은 HTML 및 XML 문서를 분석하고 내부 요소에 액세스할 수 있도록 도와주는 다양한 함수와 기능을 제공합니다.
또한, BeautifulSoup은 파서로 html.parser 외에도 lxml, html5lib 등 다양한 파서를 지원합니다. 이러한 파서들은 각각 장단점이 있으며, 다양한 상황에 맞게 선택하여 사용할 수 있습니다.
사용법
from bs4 import BeautifulSoup
# HTML 문서를 파싱하여 BeautifulSoup 객체 생성
html = "<html><body><h1>Example</h1><p>Hello, World!</p></body></html>"
soup = BeautifulSoup(html, "html.parser")
# BeautifulSoup 객체에서 요소 가져오기
h1 = soup.h1
p = soup.p
# 요소의 텍스트 가져오기
h1_text = h1.text
p_text = p.text
# 요소의 속성 값 가져오기
h1_class = h1['class']
# CSS 선택자를 이용하여 요소 가져오기
p = soup.select_one("p")
p_text = p.text
위 코드에서 BeautifulSoup() 함수를 이용하여 HTML 문서를 파싱하고, soup 객체를 생성합니다. 이후 soup 객체에서 요소를 가져와 텍스트 또는 속성 값을 읽어 올 수 있습니다. select_one() 함수를 이용하여 CSS 선택자를 이용하여 요소를 가져오는 것도 가능합니다.
BeautifulSoup은 다양한 기능을 제공하며, HTML 또는 XML 문서에서 필요한 정보를 추출하는 데 매우 유용합니다. find_all(), find(), select(), select_one() 등 다양한 함수를 제공하며, 이를 이용하여 다양한 작업을 수행할 수 있습니다.
lxml
lxml은 파이썬에서 사용할 수 있는 빠르고 유연한 XML 및 HTML 파서입니다. lxml은 C로 작성되었으며, Python/C API를 통해 Python에 바인딩되어 있어 빠르고 메모리 사용량이 적습니다.
lxml은 HTML 및 XML 문서를 처리하는 데 매우 유용하며, BeautifulSoup과 함께 사용될 때 매우 빠르게 동작합니다.
html5lib
html5lib은 파이썬에서 사용할 수 있는 또 다른 HTML 파서입니다. html5lib은 HTML5 규격을 준수하며, 잘못된 HTML을 처리하고 마크업을 정규화하는 데 매우 유용합니다.
html5lib은 단순하지만 느리기 때문에 lxml과 비교했을 때 처리 속도가 느릴 수 있습니다. 그러나 html5lib은 마크업이 규격을 준수하는지 확인하고 처리하는 데 매우 강력합니다.
따라서 웹 스크래핑 작업에서 신뢰성이 중요한 경우에는 html5lib을 사용하는 것이 좋습니다.
JSON
JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. JSON은 자바스크립트에서 사용되는 객체 표기법을 기반으로 하며, 텍스트를 사용하여 데이터를 표현합니다. JSON은 다른 프로그래밍 언어에서도 쉽게 사용할 수 있습니다.
JSON은 다음과 같은 특징을 가지고 있습니다.
- 경량 데이터 교환 형식으로서, 텍스트로 표현됩니다.
- 기본 자료형, 배열, 객체를 지원합니다.
- 인터넷에서 데이터를 교환할 때 자주 사용됩니다.
- 파싱하기 쉽고, 다른 언어에서도 쉽게 사용할 수 있습니다.
아래는 JSON의 예시입니다.
{
"name": "John",
"age": 30,
"city": "New York",
"interests": [
"reading",
"music",
"traveling"
],
"pets": [
{
"name": "Fluffy",
"species": "cat"
},
{
"name": "Buddy",
"species": "dog"
}
]
}
위 예시에서는 이름, 나이, 도시 등을 나타내는 기본 자료형과, 관심사와 애완동물을 나타내는 배열, 그리고 애완동물의 이름과 종류를 나타내는 객체를 포함하고 있습니다.
Python에서는 json 모듈을 이용하여 JSON 데이터를 다룰 수 있습니다. json 모듈은 JSON 문자열을 파싱하여 파이썬 객체로 변환하거나, 파이썬 객체를 JSON 문자열로 직렬화하는 기능을 제공합니다.
파이썬에서의 JSON 파싱
Python에서 JSON 데이터를 파싱하기 위해서는 json 모듈을 사용합니다. 이 모듈은 JSON 데이터를 파이썬 객체로 변환하는 loads() 함수와, 파이썬 객체를 JSON 문자열로 쓰는 dumps() 함수를 제공합니다.
아래는 간단한 JSON 데이터를 파싱하는 예시입니다.
import json
# JSON 문자열
json_str = '{"name": "John", "age": 30, "city": "New York"}'
# JSON 문자열을 파이썬 객체로 변환
data = json.loads(json_str)
# 파이썬 객체 출력
print(data)
위 예시에서는 json_str 변수에 JSON 문자열을 할당하고, json.loads() 함수를 사용하여 이를 파이썬 객체로 변환하였습니다. 변환된 객체를 출력하면 다음과 같이 딕셔너리 형태로 출력됩니다.
{'name': 'John', 'age': 30, 'city': 'New York'}
반대로, 파이썬 객체를 JSON 문자열로 바꾸기 위해서는 json.dumps() 함수를 사용합니다. 아래는 파이썬 객체를 JSON 문자열로 변환하는 예시입니다.
import json
# 파이썬 딕셔너리
data = {'name': 'John', 'age': 30, 'city': 'New York'}
# 파이썬 객체를 JSON 문자열로
json_str = json.dumps(data)
# JSON 문자열 출력
print(json_str)
위 예시에서는 data 변수에 파이썬 딕셔너리를 할당하고, json.dumps() 함수를 사용하여 이를 JSON 문자열로 직렬화하였습니다. 변환된 문자열을 출력하면 다음과 같이 JSON 형태로 출력됩니다.
{"name": "John", "age": 30, "city": "New York"}
'언어 공부 > Python' 카테고리의 다른 글
파일,예외처리, Log Handling (0) | 2023.03.07 |
---|---|
모듈, 패키지, 프로젝트 (0) | 2023.03.07 |
파이썬에서의 객체 지향 프로그래밍 (0) | 2023.03.06 |
파이썬식 문법 + 함수 심화 개념 (0) | 2023.03.06 |
문자열과 함수 심화 개념 (0) | 2023.03.06 |
- CSV
- HTML
- XML
- JSON
CSV
CSV(Comma-Separated Values)는 쉼표로 구분된 텍스트 파일 형식입니다. 각 라인은 하나의 레코드를 나타내며, 쉼표로 구분된 값으로 이루어진 필드들로 구성됩니다. CSV는 데이터베이스, 스프레드시트 등에서 데이터를 전송하거나 저장하기 위해 많이 사용되는 일반적인 파일 형식입니다.
Python은 표준 라이브러리인 csv 모듈을 제공하여 CSV 파일을 읽고 쓰는 기능을 제공합니다. 이 모듈은 파이썬에서 CSV 데이터를 처리하는 데 사용할 수 있는 다양한 도구를 제공합니다. csv 모듈을 사용하여 CSV 파일을 읽는 방법은 다음과 같습니다.
import csv
with open('file.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
위 코드에서는 'file.csv' 파일을 읽고, csv.reader() 함수를 사용하여 파일의 내용을 읽어옵니다. csv.reader() 함수는 각 라인을 읽어 ','를 기준으로 분할하여 리스트로 반환합니다. 이 리스트는 CSV 파일에서 각 필드에 해당하는 값들을 포함합니다. 그리고 각 라인을 순회하면서 이러한 리스트를 출력합니다.
반대로, CSV 파일을 쓰는 방법은 다음과 같습니다.
import csv
with open('file.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 25, 'Female'])
writer.writerow(['Bob', 30, 'Male'])
위 코드에서는 'file.csv' 파일을 열고, csv.writer() 함수를 사용하여 파일에 데이터를 씁니다. csv.writer() 함수는 ','로 구분된 값을 작성할 수 있는 객체를 반환합니다. 이러한 객체를 사용하여 각 라인에 해당하는 데이터를 작성합니다. 이 예제에서는 먼저 첫 번째 라인에 해당하는 필드 이름들을 작성한 다음, 다음 두 라인에 해당하는 데이터를 작성하고 있습니다. 주의할 점은 newline='' 옵션을 지정하여 줄바꿈 문자를 자동으로 삽입하지 않도록 해야합니다.
Web
웹(Web)은 World Wide Web(국제 정보망)의 줄임말로, 인터넷을 통해 전 세계적으로 연결된 컴퓨터 네트워크입니다. 웹은 정보를 검색하고 공유하기 위해 만들어졌으며, 이를 위해 다양한 프로토콜과 기술들이 사용됩니다.
웹이 동작하는 방식은 크게 두 가지로 나눌 수 있습니다.
- 클라이언트-서버 모델
- 웹은 클라이언트-서버 모델을 사용합니다. 클라이언트는 웹 브라우저를 통해 서버에 요청(Request)을 보내고, 서버는 요청에 따라 적절한 응답(Response)을 보냅니다. 이때 요청과 응답은 HTTP(HyperText Transfer Protocol) 프로토콜을 사용합니다.
- HTML, CSS, JavaScript 등의 기술
- 웹 페이지는 HTML(HyperText Markup Language)로 작성되며, CSS(Cascading Style Sheets)와 JavaScript 등의 기술을 사용하여 디자인과 동적인 기능을 추가합니다. 웹 페이지는 웹 브라우저에서 렌더링(Rendering)되어 사용자에게 표시됩니다.
일반적으로 웹 페이지를 요청하면 다음과 같은 과정을 거칩니다.
- 사용자가 웹 브라우저를 통해 웹 페이지를 요청합니다.
- 웹 브라우저는 URL(Uniform Resource Locator)을 해석하여 요청(Request)을 생성합니다.
- 요청(Request)은 인터넷을 통해 서버로 전송됩니다.
- 서버는 요청(Request)을 받고, 요청에 대한 적절한 응답(Response)을 생성합니다.
- 응답(Response)은 인터넷을 통해 웹 브라우저로 전송됩니다.
- 웹 브라우저는 응답(Response)을 받아서 웹 페이지를 렌더링(Rendering)하여 사용자에게 표시합니다.
HTML
HTML은 Hyper Text Markup Language의 약자로, 웹 페이지를 작성하기 위해 사용되는 마크업 언어입니다. HTML은 일련의 태그(tag)로 이루어져 있으며, 이 태그들은 각각의 역할과 의미를 가지고 있습니다.
HTML 문서는 일반적으로 아래와 같은 구조로 이루어져 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>웹 페이지 제목</title>
<!-- 웹 페이지의 메타 데이터, 스타일 시트, 스크립트 등을 포함합니다. -->
</head>
<body>
<!-- 웹 페이지의 콘텐츠를 포함합니다. -->
</body>
</html>
- <!DOCTYPE html>: HTML 문서의 버전을 지정합니다. 이것은 HTML5에서는 필수가 아니지만, 문서의 버전을 명시하는 것이 좋습니다.
- <html>: HTML 문서의 루트 요소입니다. 모든 요소는 이 태그 안에 작성되어야 합니다.
- <head>: HTML 문서의 메타 데이터를 포함하는 태그입니다. 예를 들어, 웹 페이지의 제목, 스타일 시트, 스크립트 등을 여기에 작성합니다.
- <title>: 웹 페이지의 제목을 나타내는 태그입니다. 브라우저의 탭에 표시됩니다.
- <body>: HTML 문서의 콘텐츠를 포함하는 태그입니다. 예를 들어, 텍스트, 이미지, 비디오 등을 여기에 작성합니다.
또한 HTML은 요소(element)와 속성(attribute)으로 구성됩니다. 예를 들어, <img> 요소는 src 속성으로 이미지의 URL을 지정합니다. 요소는 여는 태그(<tag>)와 닫는 태그(</tag>)로 구성됩니다. 닫는 태그가 없는 요소도 있습니다. 이러한 요소는 빈 요소(empty element)라고 하며, <br>이나 <img> 등이 있습니다.
정규식
- . (마침표)
- 어떤 문자 하나와 매치됩니다. 단, 줄바꿈 문자(\n)를 제외한 모든 문자와 매치됩니다.
- [] (대괄호)
- 대괄호 안에 포함된 문자 중 하나와 매치됩니다.
- 예를 들어, [abc]는 a, b, c 중 하나와 매치됩니다.
- [^] (대괄호 안에서 ^ 기호)
- 대괄호 안에 ^ 기호를 사용하면 해당 문자를 제외한 문자 중 하나와 매치됩니다.
- 예를 들어, [^abc]는 a, b, c를 제외한 다른 문자 중 하나와 매치됩니다.
- *(별)
- 바로 앞의 문자가 0번 이상 반복됨을 의미합니다.
- 예를 들어, a*는 a가 0번 이상 반복되는 문자열과 매치됩니다.
-
- +
- 바로 앞의 문자가 1번 이상 반복됨을 의미합니다.
- 예를 들어, a+는 a가 1번 이상 반복되는 문자열과 매치됩니다.
- ? (물음표)
- 바로 앞의 문자가 0 또는 1번 나타남을 의미합니다.
- 예를 들어, ab?c는 a 다음에 b가 0 또는 1번 나타나고, 그 뒤에 c가 나오는 문자열과 매치됩니다.
- {m,n} (중괄호)
- 바로 앞의 문자가 m번 이상, n번 이하로 반복됨을 의미합니다.
- 예를 들어, a{2,3}는 a가 2번 또는 3번 반복되는 문자열과 매치됩니다.
- | (파이프)
- OR 연산을 의미합니다.
- 예를 들어, a|b는 a 또는 b 중 하나와 매치됩니다.
- () (괄호)
- 괄호 안에 있는 정규식을 그룹으로 묶어서 처리합니다.
- 예를 들어, (abc)+는 abc가 1번 이상 반복되는 문자열과 매치됩니다.
위의 메타 문자 외에도 \와 같은 이스케이프 문자를 사용하여 일반 문자열로서 해석되게 할 수 있습니다.
ex) 전화번호 정규식
^\d{3}\-\d{4}\-\d{4}$
- ^ : 문자열의 시작을 의미합니다.
- \d : 0부터 9까지의 숫자를 의미합니다.
- {3} : 앞의 문자 또는 패턴이 3번 반복됨을 의미합니다.
- - : 하이픈(-) 문자를 의미합니다.
- $ : 문자열의 끝을 의미합니다.
XML
XML은 eXtensible Markup Language의 약자로, 데이터를 구조화하고 저장하기 위한 마크업 언어입니다. HTML과 유사하지만, HTML이 웹페이지를 만들기 위한 마크업 언어라면, XML은 데이터를 저장하고 교환하기 위한 마크업 언어입니다.
XML은 다음과 같은 특징을 가지고 있습니다.
- 태그를 이용하여 데이터를 구조화하고 저장합니다.
- 태그는 시작 태그와 종료 태그로 구성되며, 데이터는 태그와 태그 사이에 위치합니다.
- 태그의 이름은 개발자가 임의로 정할 수 있으며, 속성을 추가하여 더 많은 정보를 표현할 수 있습니다.
- XML은 데이터를 계층적으로 구조화할 수 있으며, 이를 이용하여 다양한 형태의 데이터를 표현할 수 있습니다.
- XML은 웹기반 서비스에서 데이터 교환의 표준으로 많이 사용되고 있습니다.
- 이기종간 정보를 주고받기 유용하다.
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="fiction">
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
<book category="non-fiction">
<title>The Elements of Style</title>
<author>William Strunk Jr.</author>
<author>E. B. White</author>
<year>1918</year>
</book>
</books>
위 예시는 책 정보를 구조화하여 저장한 것입니다. books는 루트 요소로, 그 아래에 book 요소들이 존재합니다. book 요소는 category 속성을 가지며, 그 아래에 title, author, year 요소들이 존재합니다.
이 예시에서 <?xml version="1.0" encoding="UTF-8"?>는 XML 파일의 버전과 인코딩을 나타냅니다. books 요소는 루트 요소로, 모든 XML 파일은 하나의 루트 요소를 가져야 합니다. book 요소는 책 정보를 저장하며, category 속성은 책의 카테고리를 나타냅니다. title, author, year 요소들은 각각 책의 제목, 작가, 출판 연도를 나타냅니다.
파이썬에서 XML parsing
BeautifulSoup
BeautifulSoup은 HTML 및 XML 문서를 파싱하고 분석하기 위한 파이썬 라이브러리입니다. HTML 및 XML 문서를 분석하는 것은 웹 스크래핑, 데이터 마이닝 등의 작업에서 매우 중요합니다.
BeautifulSoup은 웹 스크래핑에서 자주 사용되는 라이브러리 중 하나이며, 파이썬에서 HTML 및 XML을 처리하는 데 사용되는 표준 라이브러리인 xml과 html 모듈의 단점을 보완합니다. BeautifulSoup은 HTML 및 XML 문서를 분석하고 내부 요소에 액세스할 수 있도록 도와주는 다양한 함수와 기능을 제공합니다.
또한, BeautifulSoup은 파서로 html.parser 외에도 lxml, html5lib 등 다양한 파서를 지원합니다. 이러한 파서들은 각각 장단점이 있으며, 다양한 상황에 맞게 선택하여 사용할 수 있습니다.
사용법
from bs4 import BeautifulSoup
# HTML 문서를 파싱하여 BeautifulSoup 객체 생성
html = "<html><body><h1>Example</h1><p>Hello, World!</p></body></html>"
soup = BeautifulSoup(html, "html.parser")
# BeautifulSoup 객체에서 요소 가져오기
h1 = soup.h1
p = soup.p
# 요소의 텍스트 가져오기
h1_text = h1.text
p_text = p.text
# 요소의 속성 값 가져오기
h1_class = h1['class']
# CSS 선택자를 이용하여 요소 가져오기
p = soup.select_one("p")
p_text = p.text
위 코드에서 BeautifulSoup() 함수를 이용하여 HTML 문서를 파싱하고, soup 객체를 생성합니다. 이후 soup 객체에서 요소를 가져와 텍스트 또는 속성 값을 읽어 올 수 있습니다. select_one() 함수를 이용하여 CSS 선택자를 이용하여 요소를 가져오는 것도 가능합니다.
BeautifulSoup은 다양한 기능을 제공하며, HTML 또는 XML 문서에서 필요한 정보를 추출하는 데 매우 유용합니다. find_all(), find(), select(), select_one() 등 다양한 함수를 제공하며, 이를 이용하여 다양한 작업을 수행할 수 있습니다.
lxml
lxml은 파이썬에서 사용할 수 있는 빠르고 유연한 XML 및 HTML 파서입니다. lxml은 C로 작성되었으며, Python/C API를 통해 Python에 바인딩되어 있어 빠르고 메모리 사용량이 적습니다.
lxml은 HTML 및 XML 문서를 처리하는 데 매우 유용하며, BeautifulSoup과 함께 사용될 때 매우 빠르게 동작합니다.
html5lib
html5lib은 파이썬에서 사용할 수 있는 또 다른 HTML 파서입니다. html5lib은 HTML5 규격을 준수하며, 잘못된 HTML을 처리하고 마크업을 정규화하는 데 매우 유용합니다.
html5lib은 단순하지만 느리기 때문에 lxml과 비교했을 때 처리 속도가 느릴 수 있습니다. 그러나 html5lib은 마크업이 규격을 준수하는지 확인하고 처리하는 데 매우 강력합니다.
따라서 웹 스크래핑 작업에서 신뢰성이 중요한 경우에는 html5lib을 사용하는 것이 좋습니다.
JSON
JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. JSON은 자바스크립트에서 사용되는 객체 표기법을 기반으로 하며, 텍스트를 사용하여 데이터를 표현합니다. JSON은 다른 프로그래밍 언어에서도 쉽게 사용할 수 있습니다.
JSON은 다음과 같은 특징을 가지고 있습니다.
- 경량 데이터 교환 형식으로서, 텍스트로 표현됩니다.
- 기본 자료형, 배열, 객체를 지원합니다.
- 인터넷에서 데이터를 교환할 때 자주 사용됩니다.
- 파싱하기 쉽고, 다른 언어에서도 쉽게 사용할 수 있습니다.
아래는 JSON의 예시입니다.
{
"name": "John",
"age": 30,
"city": "New York",
"interests": [
"reading",
"music",
"traveling"
],
"pets": [
{
"name": "Fluffy",
"species": "cat"
},
{
"name": "Buddy",
"species": "dog"
}
]
}
위 예시에서는 이름, 나이, 도시 등을 나타내는 기본 자료형과, 관심사와 애완동물을 나타내는 배열, 그리고 애완동물의 이름과 종류를 나타내는 객체를 포함하고 있습니다.
Python에서는 json 모듈을 이용하여 JSON 데이터를 다룰 수 있습니다. json 모듈은 JSON 문자열을 파싱하여 파이썬 객체로 변환하거나, 파이썬 객체를 JSON 문자열로 직렬화하는 기능을 제공합니다.
파이썬에서의 JSON 파싱
Python에서 JSON 데이터를 파싱하기 위해서는 json 모듈을 사용합니다. 이 모듈은 JSON 데이터를 파이썬 객체로 변환하는 loads() 함수와, 파이썬 객체를 JSON 문자열로 쓰는 dumps() 함수를 제공합니다.
아래는 간단한 JSON 데이터를 파싱하는 예시입니다.
import json
# JSON 문자열
json_str = '{"name": "John", "age": 30, "city": "New York"}'
# JSON 문자열을 파이썬 객체로 변환
data = json.loads(json_str)
# 파이썬 객체 출력
print(data)
위 예시에서는 json_str 변수에 JSON 문자열을 할당하고, json.loads() 함수를 사용하여 이를 파이썬 객체로 변환하였습니다. 변환된 객체를 출력하면 다음과 같이 딕셔너리 형태로 출력됩니다.
{'name': 'John', 'age': 30, 'city': 'New York'}
반대로, 파이썬 객체를 JSON 문자열로 바꾸기 위해서는 json.dumps() 함수를 사용합니다. 아래는 파이썬 객체를 JSON 문자열로 변환하는 예시입니다.
import json
# 파이썬 딕셔너리
data = {'name': 'John', 'age': 30, 'city': 'New York'}
# 파이썬 객체를 JSON 문자열로
json_str = json.dumps(data)
# JSON 문자열 출력
print(json_str)
위 예시에서는 data 변수에 파이썬 딕셔너리를 할당하고, json.dumps() 함수를 사용하여 이를 JSON 문자열로 직렬화하였습니다. 변환된 문자열을 출력하면 다음과 같이 JSON 형태로 출력됩니다.
{"name": "John", "age": 30, "city": "New York"}
'언어 공부 > Python' 카테고리의 다른 글
파일,예외처리, Log Handling (0) | 2023.03.07 |
---|---|
모듈, 패키지, 프로젝트 (0) | 2023.03.07 |
파이썬에서의 객체 지향 프로그래밍 (0) | 2023.03.06 |
파이썬식 문법 + 함수 심화 개념 (0) | 2023.03.06 |
문자열과 함수 심화 개념 (0) | 2023.03.06 |