Python正则表达式实战项目:电商文本信息提取与输入格式验证
在电商项目中,文本处理和数据提取是常见需求。Python正则表达式作为一种强大的文本处理工具,可以帮助我们高效地从文本中提取信息、验证输入格式。本文将通过一个实战项目,介绍如何使用Python正则表达式在电商项目中实现这些功能。
一、项目背景
假设我们有一个电商网站,用户可以在网站上搜索商品、查看商品详情、购买商品等。在这个过程中,会产生大量的用户行为数据,包括搜索关键词、商品标题、价格等。我们需要从这些数据中提取有用的信息,以便进行数据分析、用户行为研究等。
二、需求分析
- 提取商品信息:从商品标题中提取商品名称、品牌、型号等信息。
- 验证输入格式:确保用户输入的搜索关键词或商品名称格式正确。
三、实现方案
- 提取商品信息
我们可以使用Python正则表达式来匹配和提取商品标题中的相关信息。以下是一个示例代码:
import re
def extract_product_info(title):
# 匹配品牌和型号
brand_pattern = r"(?i)(?P<brand>[\w\']+)"
model_pattern = r"(?i)(?P<model>[\w\']+)"
# 匹配商品名称
name_pattern = r"(?i)(?P<name>[\w\s]+)"
# 匹配价格
price_pattern = r"(?i)\d+\.\d+"
# 匹配评分
rating_pattern = r"(?i)\d+\/\d+"
# 匹配评价数量
reviews_pattern = r"(?i)评论数:\s*\d+"
# 匹配库存数量
stock_pattern = r"(?i)库存:\s*\d+"
# 匹配商品描述
description_pattern = r"(?i)(?P<description>[\s\S]+)"
# 匹配促销信息
promotion_pattern = r"(?i)(?P<promotion>[\s\S]+)"
# 匹配其他信息(如颜色、尺寸等)
other_info_pattern = r"(?i)(?P<other_info>[\s\S]+)"
# 匹配所有信息
pattern = re.compile(r"|".join([brand_pattern, model_pattern, name_pattern, price_pattern, rating_pattern, reviews_pattern, stock_pattern, description_pattern, promotion_pattern, other_info_pattern]))
match = pattern.search(title)
if match:
return match.groupdict()
else:
return None
在这个示例中,我们使用了多个正则表达式来匹配不同的信息,并将它们分组到不同的命名组中。然后,我们使用re.search()
函数来搜索匹配的文本,并返回一个命名组字典,其中包含了提取到的信息。
- 验证输入格式
我们可以使用Python正则表达式来验证用户输入的搜索关键词或商品名称格式是否正确。以下是一个示例代码:
import re
def validate_input(input_str):
# 验证输入是否为空或只包含空格
if not input_str.strip():
return False
# 验证输入是否包含非法字符(如特殊符号、空格等)
if re.search(r"[^\w\s]", input_str):
return False
return True
在这个示例中,我们使用了两个正则表达式来验证输入格式。首先,我们使用re.search()
函数来搜索输入字符串中是否包含非法字符。如果找到了非法字符,则返回False
表示输入格式不正确。如果输入字符串为空或只包含空格,也返回False
表示输入不合法。如果输入格式正确,则返回True
表示输入合法。
四、实战应用
- 提取商品信息
假设我们有一个包含多个商品标题的文本文件,我们可以使用上述代码来提取商品信息。以下是一个示例代码:
with open("product_titles.txt", "r") as f:
for line in f:
title = line.strip()
product_info = extract_product_info(title)
if product_info:
print(product_info)
在这个示例中,我们打开一个名为product_titles.txt
的文本文件,并逐行读取其中的商品标题。对于每个标题,我们调用extract_product_info()
函数来提取商品信息,并将结果打印到控制台上。
- 验证输入格式
假设我们有一个用户输入的搜索关键词或商品名称,我们可以使用上述代码来验证输入格式。以下是一个示例代码:
input_str = "iPhone 14"
if validate_input(input_str):
print("输入格式正确")
else:
print("输入格式不正确")
在这个示例中,我们定义了一个名为input_str
的变量,它包含了一个用户输入的搜索关键词或商品名称。然后,我们调用validate_input()
函数来验证输入格式,并根据返回值打印相应的消息。如果输入格式正确,则打印“输入格式正确”;否则,打印“输入格式不正确”。
通过使用Python正则表达式,我们可以轻松地从文本中提取有用的信息,并验证输入格式。在电商项目中,这些功能可以帮助我们更好地理解用户行为、优化搜索结果、提高用户体验等。未来,我们可以进一步扩展这些功能,例如使用深度学习模型来自动提取商品信息、使用自然语言处理技术来自动处理用户评论等。