Python 过滤并结构化数据

  • Post category:Python

Python 过滤并结构化数据的使用方法,可以分为以下几个步骤:

  1. 获取要过滤的数据

  2. 根据需要筛选数据

  3. 结构化数据

  4. 输出数据

下面针对每个步骤进行详细讲解:

1. 获取要过滤的数据

要过滤的数据可以来自于不同的来源,例如:文件、数据库、网页等。数据一般是以文本、二进制等形式储存在内存或者外部存储设备中。

在 Python 中,我们可以使用内置函数 open() 打开文件,然后使用 read() 函数读取文件中的内容,将数据存储在变量中供后续处理。

# 打开文件并读取数据
with open("data.txt", "r", encoding="utf-8") as f:
    data = f.read()

2. 根据需要筛选数据

根据需要,我们可以对数据进行筛选,只保留我们需要的信息。这里常常会用到字符串处理函数、正则表达式等方法。

# 从数据中筛选出所有数字,并存储在列表中
import re

pattern = r"\d+"
nums = re.findall(pattern, data)

3. 结构化数据

在将数据输出之前,为了更好地呈现数据,我们需要对数据进行结构化,例如:将列表转化为字典、将数据转化为 JSON 格式等。

# 将列表转换为字典
result = {"numbers": nums}

4. 输出数据

最后,可以将处理好的数据输出到屏幕、文件或者数据库中。输出的方式可以根据具体需求进行选择。

# 将数据以 JSON 格式输出到屏幕
import json

print(json.dumps(result, indent=4))

以上是Python过滤并结构化数据的基础操作。下面给出两个示例:

示例1

以下代码从指定网页中爬取新闻标题,并将其结构化后以 JSON 格式输出。

import requests
from bs4 import BeautifulSoup
import json

url = "http://www.xinhuanet.com/politics/"
r = requests.get(url)
r.encoding = "utf-8"
soup = BeautifulSoup(r.text, 'html.parser')

titles = []
for news in soup.find_all("div", class_="pictxt"):
    title = news.find("a").string
    titles.append(title)

result = {"news_titles": titles}
print(json.dumps(result, indent=4, ensure_ascii=False))

示例2

以下代码从指定的数据文件中读取 CSV 格式数据,并按照不同字段的统计结果将数据结构化后输出。

import csv
import json

with open("data.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    headers = next(reader)
    data = {}
    for h in headers:
        data[h] = []
    for row in reader:
        for i in range(len(headers)):
            data[headers[i]].append(row[i])

result = {"data": data}
print(json.dumps(result, indent=4, ensure_ascii=False))