Python

Python - 파일 및 데이터 처리 심화

thebasics 2024. 10. 31. 17:00

목차

  1. 파일 및 데이터 처리 심화란?
  2. JSON 데이터 처리
    • JSON 데이터란?
    • JSON 데이터 파싱 및 저장
  3. CSV 데이터 처리
    • CSV 데이터란?
    • CSV 데이터 읽기 및 쓰기
  4. XML 데이터 처리
    • XML 데이터란?
    • XML 데이터 파싱 및 생성
  5. 예시 코드
  6. 결론
  7. 관련 자료 및 추가 학습 자료

1. 파일 및 데이터 처리 심화란?

Python은 다양한 형식의 데이터를 처리하고 저장하는 데 매우 유용한 도구입니다. 특히 JSON, CSV, XML과 같은 표준 데이터 형식은 웹 서비스, 데이터 분석, 시스템 통합 등 다양한 분야에서 널리 사용됩니다. 이 글에서는 JSON, CSV, XML 데이터 처리에 대한 심화 내용을 다루고, 각 데이터 형식을 파싱하고 저장하는 방법을 설명합니다. 이러한 기술을 통해 다양한 형식의 데이터를 효과적으로 다룰 수 있습니다.


2. JSON 데이터 처리

JSON 데이터란?

JSON(JavaScript Object Notation)은 경량의 데이터 교환 형식으로, 사람과 기계 모두 읽고 쓰기 쉽도록 설계되었습니다. Python에서는 json 모듈을 사용하여 JSON 데이터를 쉽게 파싱하고 생성할 수 있습니다.

JSON 데이터 파싱 및 저장

  • JSON 데이터 파싱:

    import json
    
    json_string = '{"name": "John", "age": 30, "city": "New York"}'
    data = json.loads(json_string)
    print(data['name'])  # John
    • json.loads()를 사용하여 JSON 문자열을 Python의 딕셔너리로 변환합니다.
  • JSON 데이터 저장:

    import json
    
    data = {
        "name": "Alice",
        "age": 25,
        "city": "London"
    }
    json_string = json.dumps(data)
    print(json_string)  # {"name": "Alice", "age": 25, "city": "London"}
    • json.dumps()를 사용하여 Python 객체를 JSON 문자열로 변환합니다.
  • 파일로 저장하고 읽기:

    # JSON 데이터를 파일에 저장
    with open('data.json', 'w') as file:
        json.dump(data, file)
    
    # 파일에서 JSON 데이터 읽기
    with open('data.json', 'r') as file:
        data_loaded = json.load(file)
        print(data_loaded)  # {'name': 'Alice', 'age': 25, 'city': 'London'}
    • json.dump()json.load()를 사용하여 JSON 데이터를 파일로 저장하고 읽어옵니다.

3. CSV 데이터 처리

CSV 데이터란?

CSV(Comma Separated Values)는 간단한 텍스트 형식으로 데이터를 저장하는 방법입니다. 각 행은 데이터 레코드를 나타내며, 각 열은 쉼표로 구분됩니다. Python의 csv 모듈을 사용하면 CSV 데이터를 쉽게 읽고 쓸 수 있습니다.

CSV 데이터 읽기 및 쓰기

  • CSV 데이터 읽기:

    import csv
    
    with open('data.csv', mode='r') as file:
        csv_reader = csv.reader(file)
        for row in csv_reader:
            print(row)
    • csv.reader()를 사용하여 CSV 파일을 읽고, 각 행을 순회합니다.
  • CSV 데이터 쓰기:

    import csv
    
    data = [
        ['Name', 'Age', 'City'],
        ['John', 30, 'New York'],
        ['Alice', 25, 'London']
    ]
    
    with open('output.csv', mode='w', newline='') as file:
        csv_writer = csv.writer(file)
        csv_writer.writerows(data)
    • csv.writer()를 사용하여 데이터를 CSV 파일에 씁니다. writerows()는 리스트의 각 요소를 행으로 추가합니다.
  • 딕셔너리로 CSV 읽기 및 쓰기:

    # 딕셔너리로 CSV 읽기
    with open('data.csv', mode='r') as file:
        csv_reader = csv.DictReader(file)
        for row in csv_reader:
            print(row['Name'], row['Age'], row['City'])
    
    # 딕셔너리로 CSV 쓰기
    with open('output_dict.csv', mode='w', newline='') as file:
        fieldnames = ['Name', 'Age', 'City']
        csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
        csv_writer.writeheader()
        csv_writer.writerow({'Name': 'John', 'Age': 30, 'City': 'New York'})
    • DictReaderDictWriter를 사용하면 CSV 데이터를 딕셔너리 형태로 쉽게 처리할 수 있습니다.

4. XML 데이터 처리

XML 데이터란?

XML(eXtensible Markup Language)은 데이터 저장 및 전송을 위해 사용되는 마크업 언어입니다. 데이터 구조를 계층적으로 표현하며, Python에서는 xml.etree.ElementTree 모듈을 사용하여 XML 데이터를 파싱하고 생성할 수 있습니다.

XML 데이터 파싱 및 생성

  • XML 데이터 파싱:

    import xml.etree.ElementTree as ET
    
    xml_data = '''<data>
        <person>
            <name>John</name>
            <age>30</age>
            <city>New York</city>
        </person>
    </data>'''
    
    root = ET.fromstring(xml_data)
    for person in root.findall('person'):
        name = person.find('name').text
        age = person.find('age').text
        city = person.find('city').text
        print(name, age, city)
    • ET.fromstring()을 사용하여 XML 문자열을 파싱하고, 트리 구조를 순회하여 데이터를 추출합니다.
  • XML 데이터 생성:

    import xml.etree.ElementTree as ET
    
    root = ET.Element("data")
    person = ET.SubElement(root, "person")
    name = ET.SubElement(person, "name")
    name.text = "Alice"
    age = ET.SubElement(person, "age")
    age.text = "25"
    city = ET.SubElement(person, "city")
    city.text = "London"
    
    tree = ET.ElementTree(root)
    tree.write("output.xml")
    • ET.Element()ET.SubElement()를 사용하여 XML 요소를 생성하고, tree.write()를 사용하여 파일로 저장합니다.
  • XML 파일 읽기:

    tree = ET.parse('output.xml')
    root = tree.getroot()
    for person in root.findall('person'):
        name = person.find('name').text
        print(name)
    • ET.parse()를 사용하여 XML 파일을 읽고, 트리 구조를 순회합니다.

5. 예시 코드

JSON 데이터 처리 예시

import json

data = {
    "employees": [
        {"name": "John", "age": 30},
        {"name": "Anna", "age": 25}
    ]
}

# JSON 파일로 저장
with open('employees.json', 'w') as json_file:
    json.dump(data, json_file)

# JSON 파일 읽기
with open('employees.json', 'r') as json_file:
    data_loaded = json.load(json_file)
    print(data_loaded)

CSV 데이터 처리 예시

import csv

# CSV 파일 쓰기
data = [
    ['Product', 'Price', 'Quantity'],
    ['Apple', 0.5, 100],
    ['Banana', 0.3, 200]
]

with open('products.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

# CSV 파일 읽기
with open('products.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

XML 데이터 처리 예시

import xml.etree.ElementTree as ET

# XML 파일 생성
root = ET.Element("library")
book = ET.SubElement(root, "book")
title = ET.SubElement(book, "title")
title.text = "Python Programming"
author = ET.SubElement(book, "author")
author.text = "John Doe"

tree = ET.ElementTree(root)
tree.write("library.xml")

# XML 파일 읽기
tree = ET.parse('library.xml')
root = tree.getroot()
for book in root.findall('book'):
    title = book.find('title').text
    author = book.find('author').text
    print(title, author)

6. 결론

Python에서는 JSON, CSV, XML과 같은 다양한 데이터 형식을 쉽게 처리할 수 있는 도구를 제공합니다. json 모듈을 통해 JSON 데이터를 파싱하고 생성하며, csv 모듈을 사용하여 CSV 데이터를 읽고 쓸 수 있습니다. 또한, xml.etree.ElementTree 모듈을 사용하면 XML 데이터를 파싱하고 생성하는 작업을 간단하게 수행할 수 있습니다. 이러한 데이터 처리 기술을 이해하고 활용하면 다양한 형식의 데이터를 효율적으로 다룰 수 있으며, 데이터 파싱 및 저장 작업을 더욱 간편하게 처리할 수 있습니다.


7. 관련 자료 및 추가 학습 자료


이 글에서는 Python에서 JSON, CSV, XML 데이터 처리를 다루는 방법을 살펴보았습니다. 각 데이터 형식을 파싱하고 저장하는 방법을 이해하고 이를 활용하여 다양한 형식의 데이터를 효율적으로 처리해 보세요.

반응형