Python 过滤并结构化数据的使用方法,可以分为以下几个步骤:
-
获取要过滤的数据
-
根据需要筛选数据
-
结构化数据
-
输出数据
下面针对每个步骤进行详细讲解:
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))