python如何提取文本信息?

先读取文本内容,再根据结构选择字符串处理、正则表达式或专用库提取信息。1. 读取文件或字符串变量;2. 用split()、find()等方法提取固定格式信息;3. 用re.findall()提取邮箱、电话、日期等规律性信息;4. 对JSON、HTML、PDF等结构化文本分别使用json、BeautifulSoup、PyPDF2等工具解析后提取。

提取文本信息在Python中很常见,主要根据文本来源和结构选择合适的方法。核心思路是读取文本内容后,用字符串处理、正则表达式或专用库进行信息抽取。

1. 读取文本内容

先将文本加载到程序中,常见方式有读取文件或处理字符串变量。

示例:
  • 读取本地文本文件:
    with open('text.txt', 'r', encoding='utf-8') as f:
        text = f.read()
  • 处理字符串:
    text = "这里是需要提取信息的文本内容"

2. 使用字符串方法提取简单信息

适用于格式固定的文本,比如提取关键词前后的内容。

  • split() 分割文本: 按分隔符切分,取所需部分
    title = text.split("标题:")[1].split("\n")[0]
  • find() + 切片: 定位关键词位置并提取
    start = text.find("电话:") + 3
    end = text.find("\n", start)
    phone = text[start:end]

3. 使用正则表达式提取复杂模式

适合提取电话号码、邮箱、日期等有规律的信息。

示例:
  • 提取邮箱:
    import re
    emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
  • 提取手机号:
    phones = re.findall(r'1[3-9]\d{9}', text)
  • 提取日期(如2025-04-05):
    dates = re.findall(r'\d{4}-\d{2}-\d{2}', text)

4. 处理结构化文本(如JSON、HTML、PDF)

不同格式需用对应工具解析后再提取。

  • JSON 数据:
    import json
    data = json.loads(text)
    value = data['key']
  • HTML 页面(用 BeautifulSoup):
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(text, 'html.parser')
    titles = soup.find_all('h1')
  • PDF 文件(用 PyPDF2 或 pdfplumber):
    import PyPDF2
    reader = PyPDF2.PdfReader('file.pdf')
    text = reader.pages[0].extract_text()
基本上就这些。根据你的文本类型选对方法,再结合字符串操作和正则表达式,就能高效提取所需信息。