欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python打造一個專業(yè)的PDF文本提取工具

 更新時間:2025年07月18日 09:35:26   作者:超級小識  
這篇文章主要為大家詳細(xì)介紹了如何使用Python開發(fā)一個專業(yè)的PDF文本提取工具,幫助大家從PDF文檔中高效提取結(jié)構(gòu)化文本數(shù)據(jù),適用于數(shù)據(jù)分析,內(nèi)容歸檔和知識管理等場景

簡介

我們將采用PyPDF2、pdfplumber等主流Python庫來實現(xiàn)核心功能,并重點解決以下技術(shù)難點:

1.文本提取精度優(yōu)化

  • 處理特殊格式PDF(掃描件、表格文檔等)
  • 解決文字編碼識別問題
  • 處理分欄排版文檔的文本重組

2.結(jié)構(gòu)化數(shù)據(jù)處理

  • 自動識別文檔標(biāo)題層級
  • 提取表格數(shù)據(jù)并轉(zhuǎn)換為CSV格式
  • 保留原文檔的段落格式和列表結(jié)構(gòu)

3.性能優(yōu)化方案

  • 批量處理大量PDF文檔
  • 內(nèi)存使用優(yōu)化
  • 多線程加速處理

典型應(yīng)用場景包括:

  • 金融行業(yè)報表數(shù)據(jù)提取
  • 學(xué)術(shù)論文文獻(xiàn)整理
  • 法律合同條款分析
  • 醫(yī)療報告信息抽取

開發(fā)環(huán)境要求:

  • Python 3.8+
  • 推薦IDE:PyCharm或VS Code
  • 依賴管理工具:pipenv或conda

我們將分步驟實現(xiàn):

  • 安裝必要的Python庫
  • 開發(fā)基礎(chǔ)文本提取功能
  • 添加表格處理模塊
  • 實現(xiàn)批量處理功能
  • 優(yōu)化輸出格式(JSON/CSV/Markdown)
  • 添加GUI界面(可選)

最終成果將是一個可復(fù)用的PDF處理工具包,支持命令行和API兩種調(diào)用方式,方便集成到各類數(shù)據(jù)處理流程中。

環(huán)境準(zhǔn)備

開發(fā)本工具需要以下環(huán)境配置:

Python環(huán)境:建議Python 3.8或更高版本

必要庫

  • PyPDF2(基礎(chǔ)PDF操作)
  • pdfminer.six(高級文本提?。?/li>
  • pandas(數(shù)據(jù)導(dǎo)出)

安裝命令:

pip install PyPDF2 pdfminer.six pandas

工具功能概述

本工具將實現(xiàn)以下核心功能:

  • 提取PDF文檔元數(shù)據(jù)(作者、標(biāo)題等)
  • 按頁面提取文本內(nèi)容
  • 保留文本基本格式和結(jié)構(gòu)
  • 識別文檔目錄結(jié)構(gòu)
  • 支持批量處理多個PDF文件
  • 導(dǎo)出為結(jié)構(gòu)化格式(CSV/Excel)

完整代碼實現(xiàn)

import os
import re
from datetime import datetime
from typing import List, Dict, Optional, Tuple

import pandas as pd
from PyPDF2 import PdfReader
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer

class PDFTextExtractor:
    """專業(yè)的PDF文本提取工具"""
    
    def __init__(self, output_dir: str = "output"):
        """
        初始化提取工具
        
        :param output_dir: 輸出目錄路徑
        """
        self.output_dir = output_dir
        os.makedirs(self.output_dir, exist_ok=True)
        
        # 文本清理正則表達(dá)式
        self.clean_patterns = [
            (r'\s+', ' '),  # 合并多個空白字符
            (r'\n{3,}', '\n\n'),  # 限制連續(xù)換行
            (r'[^\x00-\x7F]+', ' '),  # 移除非ASCII字符
        ]
    
    def extract_metadata(self, pdf_path: str) -> Dict[str, str]:
        """提取PDF元數(shù)據(jù)"""
        with open(pdf_path, 'rb') as file:
            reader = PdfReader(file)
            meta = reader.metadata
            
            return {
                'file_name': os.path.basename(pdf_path),
                'title': meta.get('/Title', ''),
                'author': meta.get('/Author', ''),
                'creator': meta.get('/Creator', ''),
                'producer': meta.get('/Producer', ''),
                'created_date': meta.get('/CreationDate', ''),
                'modified_date': meta.get('/ModDate', ''),
                'page_count': len(reader.pages),
                'extraction_date': datetime.now().isoformat()
            }
    
    def clean_text(self, text: str) -> str:
        """清理和規(guī)范化提取的文本"""
        for pattern, replacement in self.clean_patterns:
            text = re.sub(pattern, replacement, text)
        return text.strip()
    
    def extract_text_from_page(self, page_layout) -> str:
        """從單個頁面布局提取文本"""
        page_text = []
        for element in page_layout:
            if isinstance(element, LTTextContainer):
                text = element.get_text()
                if text.strip():
                    page_text.append(self.clean_text(text))
        return '\n'.join(page_text)
    
    def extract_toc(self, pdf_path: str) -> List[Dict[str, str]]:
        """嘗試提取文檔目錄結(jié)構(gòu)"""
        toc = []
        try:
            with open(pdf_path, 'rb') as file:
                reader = PdfReader(file)
                if reader.outline:
                    for item in reader.outline:
                        if isinstance(item, list):
                            continue  # 跳過子項處理簡化示例
                        toc.append({
                            'title': item.title,
                            'page': reader.get_destination_page_number(item) + 1
                        })
        except Exception:
            pass  # 目錄提取失敗不影響主流程
        return toc
    
    def process_pdf(self, pdf_path: str) -> Dict[str, any]:
        """處理單個PDF文件"""
        if not os.path.isfile(pdf_path):
            raise FileNotFoundError(f"PDF文件不存在: {pdf_path}")
        
        result = {
            'metadata': self.extract_metadata(pdf_path),
            'toc': self.extract_toc(pdf_path),
            'pages': []
        }
        
        # 使用pdfminer逐頁提取文本
        for i, page_layout in enumerate(extract_pages(pdf_path)):
            page_text = self.extract_text_from_page(page_layout)
            if page_text:
                result['pages'].append({
                    'page_number': i + 1,
                    'content': page_text,
                    'char_count': len(page_text),
                    'word_count': len(page_text.split())
                })
        
        return result
    
    def batch_process(self, pdf_files: List[str]) -> List[Dict[str, any]]:
        """批量處理多個PDF文件"""
        results = []
        for pdf_file in pdf_files:
            try:
                print(f"正在處理: {os.path.basename(pdf_file)}...")
                results.append(self.process_pdf(pdf_file))
            except Exception as e:
                print(f"處理 {pdf_file} 時出錯: {str(e)}")
                results.append({
                    'file': pdf_file,
                    'error': str(e)
                })
        return results
    
    def export_to_csv(self, data: List[Dict[str, any]], prefix: str = "pdf_export"):
        """將提取結(jié)果導(dǎo)出為CSV"""
        # 準(zhǔn)備元數(shù)據(jù)表格
        meta_data = [item['metadata'] for item in data if 'metadata' in item]
        meta_df = pd.DataFrame(meta_data)
        
        # 準(zhǔn)備頁面內(nèi)容表格
        page_data = []
        for doc in data:
            if 'pages' in doc:
                for page in doc['pages']:
                    page_entry = {
                        'file_name': doc['metadata']['file_name'],
                        **page
                    }
                    page_data.append(page_entry)
        pages_df = pd.DataFrame(page_data)
        
        # 生成時間戳文件名
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        meta_file = os.path.join(self.output_dir, f"{prefix}_metadata_{timestamp}.csv")
        pages_file = os.path.join(self.output_dir, f"{prefix}_pages_{timestamp}.csv")
        
        # 保存文件
        meta_df.to_csv(meta_file, index=False, encoding='utf-8-sig')
        pages_df.to_csv(pages_file, index=False, encoding='utf-8-sig')
        
        return meta_file, pages_file

# 使用示例
if __name__ == "__main__":
    # 初始化提取器
    extractor = PDFTextExtractor()
    
    # 示例PDF文件列表(替換為實際路徑)
    sample_files = [
        "documents/sample1.pdf",
        "documents/sample2.pdf"
    ]
    
    # 批量處理并導(dǎo)出
    results = extractor.batch_process(sample_files)
    meta_csv, pages_csv = extractor.export_to_csv(results)
    
    print(f"\n處理完成!\n元數(shù)據(jù)已保存至: {meta_csv}\n頁面內(nèi)容已保存至: {pages_csv}")

代碼深度解析

1. 類設(shè)計與初始化

class PDFTextExtractor:
    def __init__(self, output_dir: str = "output"):
        self.output_dir = output_dir
        os.makedirs(self.output_dir, exist_ok=True)
        
        # 文本清理正則表達(dá)式
        self.clean_patterns = [
            (r'\s+', ' '),  # 合并多個空白字符
            (r'\n{3,}', '\n\n'),  # 限制連續(xù)換行
            (r'[^\x00-\x7F]+', ' '),  # 移除非ASCII字符
        ]
  • 默認(rèn)輸出目錄為"output",自動創(chuàng)建目錄
  • 預(yù)定義文本清理規(guī)則,確保提取文本質(zhì)量
  • 使用exist_ok=True避免目錄已存在錯誤

2. PDF元數(shù)據(jù)提取

def extract_metadata(self, pdf_path: str) -> Dict[str, str]:
    with open(pdf_path, 'rb') as file:
        reader = PdfReader(file)
        meta = reader.metadata
        
        return {
            'file_name': os.path.basename(pdf_path),
            'title': meta.get('/Title', ''),
            'author': meta.get('/Author', ''),
            # ...其他元數(shù)據(jù)字段
        }
  • 使用PyPDF2讀取PDF基礎(chǔ)信息
  • 提取標(biāo)準(zhǔn)文檔屬性(標(biāo)題、作者等)
  • 包含文件基本信息(名稱、頁數(shù)等)
  • 記錄提取時間戳便于追蹤

3. 文本內(nèi)容提取與清理

def clean_text(self, text: str) -> str:
    for pattern, replacement in self.clean_patterns:
        text = re.sub(pattern, replacement, text)
    return text.strip()

def extract_text_from_page(self, page_layout) -> str:
    page_text = []
    for element in page_layout:
        if isinstance(element, LTTextContainer):
            text = element.get_text()
            if text.strip():
                page_text.append(self.clean_text(text))
    return '\n'.join(page_text)
  • 使用pdfminer的布局分析功能
  • 精確識別文本容器元素
  • 應(yīng)用多級文本清理規(guī)則
  • 保留合理的文本結(jié)構(gòu)(段落分隔)

4. 目錄結(jié)構(gòu)提取

本工具將實現(xiàn)以下核心功能:

1.PDF文檔元數(shù)據(jù)提取

自動識別并提取文檔屬性信息,包括但不限于:

  • 基礎(chǔ)信息:標(biāo)題、作者、主題、關(guān)鍵詞
  • 創(chuàng)建信息:創(chuàng)建日期、修改日期、創(chuàng)建工具
  • 安全設(shè)置:加密狀態(tài)、權(quán)限信息
  • 示例:對于學(xué)術(shù)論文PDF,可提取DOI編號、ISSN等專業(yè)元數(shù)據(jù)

2.精準(zhǔn)文本內(nèi)容提取

支持按頁面粒度提取文本

智能識別文檔分欄排版,保持原始閱讀順序

處理特殊文本元素:

  • 表格內(nèi)容結(jié)構(gòu)化提取
  • 頁眉頁腳自動識別與過濾
  • 腳注和尾注關(guān)聯(lián)處理

3.格式與結(jié)構(gòu)保留

  • 維持原始文本的段落劃分和換行符
  • 識別并標(biāo)記各級標(biāo)題樣式(H1-H6)
  • 保留項目符號和編號列表結(jié)構(gòu)
  • 處理特殊格式:加粗、斜體、下劃線等強(qiáng)調(diào)文本

4.智能目錄解析

  • 自動構(gòu)建文檔層級關(guān)系樹
  • 識別目錄條目與正文頁面的對應(yīng)關(guān)系
  • 支持手動校正識別錯誤的目錄結(jié)構(gòu)
  • 對于無目錄文檔,可基于標(biāo)題樣式自動生成

5.批量處理能力

  • 支持文件夾批量導(dǎo)入處理
  • 提供處理進(jìn)度實時顯示
  • 錯誤文件自動跳過并記錄日志
  • 典型應(yīng)用場景:圖書館電子文檔批量歸檔、企業(yè)文檔管理系統(tǒng)建設(shè)

6.多樣化輸出選項

結(jié)構(gòu)化數(shù)據(jù)導(dǎo)出:

  • CSV格式:適合數(shù)據(jù)庫導(dǎo)入
  • Excel:保留多工作表結(jié)構(gòu)
  • JSON:保持層級關(guān)系

自定義輸出模板:

  • 選擇需要導(dǎo)出的元數(shù)據(jù)字段
  • 設(shè)置文本內(nèi)容導(dǎo)出范圍(如僅正文或包含注釋)
  • 配置分頁/連續(xù)文本輸出模式

嘗試提取PDF內(nèi)置目錄結(jié)構(gòu)

處理嵌套目錄項(簡化版跳過子項)

容錯處理確保主流程不受影響

返回標(biāo)準(zhǔn)化的目錄條目列表

5. 批量處理與導(dǎo)出

def batch_process(self, pdf_files: List[str]) -> List[Dict[str, any]]:
    results = []
    for pdf_file in pdf_files:
        try:
            results.append(self.process_pdf(pdf_file))
        except Exception as e:
            results.append({'file': pdf_file, 'error': str(e)})
    return results
 
def export_to_csv(self, data: List[Dict[str, any]], prefix: str = "pdf_export"):
    # 準(zhǔn)備元數(shù)據(jù)和頁面內(nèi)容DataFrame
    meta_df = pd.DataFrame([item['metadata'] for item in data if 'metadata' in item])
    pages_df = pd.DataFrame([
        {'file_name': doc['metadata']['file_name'], **page}
        for doc in data if 'pages' in doc
        for page in doc['pages']
    ])
    
    # 保存CSV文件
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    meta_file = os.path.join(self.output_dir, f"{prefix}_metadata_{timestamp}.csv")
    pages_file = os.path.join(self.output_dir, f"{prefix}_pages_{timestamp}.csv")
    
    meta_df.to_csv(meta_file, index=False, encoding='utf-8-sig')
    pages_df.to_csv(pages_file, index=False, encoding='utf-8-sig')
  • 支持批量處理多個PDF文件
  • 每個文件獨(dú)立錯誤處理不影響整體
  • 使用pandas構(gòu)建結(jié)構(gòu)化數(shù)據(jù)
  • 自動生成時間戳文件名避免覆蓋
  • UTF-8編碼確保特殊字符正確保存

高級應(yīng)用與擴(kuò)展

1. OCR集成(處理掃描版PDF)

try:
    import pytesseract
    from pdf2image import convert_from_path
    
    def extract_text_with_ocr(self, pdf_path: str) -> Dict[str, any]:
        """使用OCR處理圖像型PDF"""
        images = convert_from_path(pdf_path)
        ocr_results = []
        
        for i, image in enumerate(images):
            text = pytesseract.image_to_string(image)
            if text.strip():
                ocr_results.append({
                    'page_number': i + 1,
                    'content': self.clean_text(text),
                    'method': 'OCR'
                })
        
        return {
            'metadata': self.extract_metadata(pdf_path),
            'pages': ocr_results
        }
except ImportError:
    pass

2. 表格數(shù)據(jù)提取

try:
    import camelot
    
    def extract_tables(self, pdf_path: str) -> List[Dict[str, any]]:
        """提取PDF中的表格數(shù)據(jù)"""
        tables = camelot.read_pdf(pdf_path, flavor='lattice')
        return [
            {
                'page': table.page,
                'order': table.order,
                'df': table.df.to_dict(),
                'accuracy': table.accuracy
            }
            for table in tables
        ]
except ImportError:
    pass

3. 數(shù)據(jù)庫存儲支持

import sqlite3

def export_to_sqlite(self, data: List[Dict[str, any]], db_name: str = "pdf_data.db"):
    """將提取結(jié)果導(dǎo)出到SQLite數(shù)據(jù)庫"""
    conn = sqlite3.connect(os.path.join(self.output_dir, db_name))
    
    # 創(chuàng)建元數(shù)據(jù)表
    conn.execute('''
    CREATE TABLE IF NOT EXISTS pdf_metadata (
        file_name TEXT PRIMARY KEY,
        title TEXT,
        author TEXT,
        page_count INTEGER,
        created_date TEXT
    )
    ''')
    
    # 創(chuàng)建頁面內(nèi)容表
    conn.execute('''
    CREATE TABLE IF NOT EXISTS pdf_pages (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        file_name TEXT,
        page_number INTEGER,
        content TEXT,
        char_count INTEGER,
        word_count INTEGER
    )
    ''')
    
    # 插入數(shù)據(jù)
    for doc in data:
        if 'metadata' in doc:
            meta = doc['metadata']
            conn.execute(
                'INSERT OR REPLACE INTO pdf_metadata VALUES (?,?,?,?,?)',
                (meta['file_name'], meta['title'], meta['author'], 
                 meta['page_count'], meta['created_date'])
        
        if 'pages' in doc:
            for page in doc['pages']:
                conn.execute(
                    'INSERT INTO pdf_pages VALUES (NULL,?,?,?,?,?)',
                    (doc['metadata']['file_name'], page['page_number'],
                     page['content'], page['char_count'], page['word_count'])
    
    conn.commit()
    conn.close()

性能優(yōu)化建議

并行處理

from concurrent.futures import ThreadPoolExecutor

def parallel_batch_process(self, pdf_files: List[str], workers: int = 4):
    with ThreadPoolExecutor(max_workers=workers) as executor:
        return list(executor.map(self.process_pdf, pdf_files))

增量處理

  • 記錄已處理文件避免重復(fù)工作
  • 支持?jǐn)帱c續(xù)處理

內(nèi)存優(yōu)化

  • 流式處理大文件
  • 限制同時打開的文件數(shù)

安全注意事項

文件驗證

  • 檢查文件確實是PDF格式
  • 驗證文件完整性

敏感數(shù)據(jù)處理

  • 可選擦除敏感內(nèi)容
  • 提供內(nèi)容過濾選項

權(quán)限控制

  • 檢查文件讀寫權(quán)限
  • 安全處理臨時文件

單元測試建議

import unittest
import shutil
from pathlib import Path

class TestPDFTextExtractor(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.test_dir = Path("test_output")
        cls.test_dir.mkdir(exist_ok=True)
        
        # 創(chuàng)建測試PDF (實際使用中應(yīng)準(zhǔn)備樣例文件)
        cls.sample_pdf = cls.test_dir / "sample.pdf"
        # 這里應(yīng)添加PDF生成代碼或使用預(yù)準(zhǔn)備的測試文件
    
    def test_metadata_extraction(self):
        extractor = PDFTextExtractor(self.test_dir)
        result = extractor.process_pdf(self.sample_pdf)
        self.assertIn('metadata', result)
        self.assertGreater(result['metadata']['page_count'], 0)
    
    def test_text_extraction(self):
        extractor = PDFTextExtractor(self.test_dir)
        result = extractor.process_pdf(self.sample_pdf)
        self.assertIn('pages', result)
        self.assertGreater(len(result['pages']), 0)
        self.assertGreater(result['pages'][0]['word_count'], 0)
    
    @classmethod
    def tearDownClass(cls):
        shutil.rmtree(cls.test_dir)

if __name__ == '__main__':
    unittest.main()

結(jié)語

本文詳細(xì)講解了專業(yè)PDF文本提取工具的開發(fā)過程,涵蓋了以下核心技術(shù)和實現(xiàn)細(xì)節(jié):

1.PDF元數(shù)據(jù)提取技術(shù)

  • 解析PDF文件頭信息獲取版本號
  • 提取文檔屬性(標(biāo)題、作者、創(chuàng)建日期等)
  • 獲取頁面尺寸、旋轉(zhuǎn)角度等布局信息
  • 示例:使用PyPDF2庫提取文檔創(chuàng)建時間戳

2.文本內(nèi)容精確提取方法

  • 字符編碼檢測與轉(zhuǎn)換處理
  • 分頁文本提取與頁碼標(biāo)記
  • 表格內(nèi)容識別與結(jié)構(gòu)化處理
  • 特殊字符和連字符的處理策略
  • 實際案例:處理包含數(shù)學(xué)公式的學(xué)術(shù)論文PDF

3.結(jié)構(gòu)化數(shù)據(jù)導(dǎo)出策略

  • CSV格式的表格導(dǎo)出實現(xiàn)
  • XML格式的層次化數(shù)據(jù)組織
  • 保留原始文檔結(jié)構(gòu)的導(dǎo)出方案
  • 性能對比:不同導(dǎo)出格式的處理效率

4.異常處理和性能考量

  • 加密PDF的解密處理流程
  • 損壞文件的恢復(fù)機(jī)制
  • 內(nèi)存優(yōu)化和大文件處理技巧
  • 多線程處理實現(xiàn)方案

5.多種擴(kuò)展可能性

  • 插件式架構(gòu)設(shè)計
  • 第三方API集成接口
  • 機(jī)器學(xué)習(xí)模型接入點

讀者可以通過這個基礎(chǔ)框架,根據(jù)實際需求添加更多高級功能,如:

1.自定義內(nèi)容過濾規(guī)則

  • 正則表達(dá)式匹配過濾
  • 關(guān)鍵詞黑白名單設(shè)置
  • 基于位置的區(qū)域選擇提取

2.支持更多輸出格式

  • JSON格式的靈活配置
  • Markdown的標(biāo)題層級保留
  • 自定義模板輸出

3.集成到自動化工作流中

  • 命令行批處理模式
  • 文件夾監(jiān)控自動處理
  • 與OCR系統(tǒng)的管道連接

4.開發(fā)Web服務(wù)接口

  • RESTful API設(shè)計
  • 文件上傳處理流程
  • 異步任務(wù)隊列實現(xiàn)

建議在實際使用前充分測試各種類型的PDF文檔,特別是處理以下特殊場景時:

  • 掃描版PDF(需要OCR集成)
  • 多欄排版的學(xué)術(shù)論文
  • 包含復(fù)雜表格的財務(wù)報表
  • 使用特殊字體的設(shè)計文檔
  • 加密或權(quán)限受限的文檔

測試時應(yīng)重點關(guān)注:

  • 文本提取的完整性和準(zhǔn)確性
  • 格式保留的保真度
  • 處理時間的可接受度
  • 內(nèi)存消耗的穩(wěn)定性

以上就是使用Python打造一個專業(yè)的PDF文本提取工具的詳細(xì)內(nèi)容,更多關(guān)于Python PDF文本提取的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PyTorch環(huán)境中CUDA版本沖突問題排查與解決方案

    PyTorch環(huán)境中CUDA版本沖突問題排查與解決方案

    在使用 PyTorch 進(jìn)行深度學(xué)習(xí)開發(fā)時,CUDA 版本兼容性問題是個老生常談的話題,本文將通過一次真實的排查過程,剖析 PyTorch 虛擬環(huán)境自帶 CUDA 運(yùn)行時庫與系統(tǒng)全局 CUDA 環(huán)境沖突的場景,需要的朋友可以參考下
    2025-02-02
  • pandas常用表連接merge/concat/join/append詳解

    pandas常用表連接merge/concat/join/append詳解

    使用python的pandas庫可以很容易幫你搞定,而且性能也是很出色的;百萬級的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • pytorch 搭建神經(jīng)網(wǎng)路的實現(xiàn)

    pytorch 搭建神經(jīng)網(wǎng)路的實現(xiàn)

    這篇文章主要介紹了pytorch 搭建神經(jīng)網(wǎng)路,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python中的日志文件按天分割

    python中的日志文件按天分割

    這篇文章主要介紹了python中的日志文件按天分割方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python?如何調(diào)用手機(jī)攝像頭

    Python?如何調(diào)用手機(jī)攝像頭

    本文介紹了如何使用Python和OpenCV庫在電腦上通過網(wǎng)絡(luò)連接查看和控制安卓手機(jī)攝像頭,詳細(xì)步驟包括安裝IP攝像頭服務(wù)器軟件,在同一局域網(wǎng)中連接手機(jī)和電腦,編寫Python腳本捕獲攝像頭數(shù)據(jù),以及保存照片等操作,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 5個Python使用F-String進(jìn)行格式化的實用技巧分享

    5個Python使用F-String進(jìn)行格式化的實用技巧分享

    F-String(格式化字符串字面值)是在Python?3.6中引入的,它是一種非常強(qiáng)大且靈活的字符串格式化方法,本文總結(jié)了5個實用的F-String技巧,相信一定能讓你的代碼輸出更加的美觀,快跟隨小編一起學(xué)習(xí)起來吧
    2024-03-03
  • Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    本文將詳細(xì)介紹Python中將字符串轉(zhuǎn)換為列表的八種常用方法,每種方法都具有其獨(dú)特的用途和適用場景,文中的示例代碼講解詳細(xì),感興趣的可以了解下
    2023-11-11
  • redis數(shù)據(jù)庫及與python交互用法簡單示例

    redis數(shù)據(jù)庫及與python交互用法簡單示例

    這篇文章主要介紹了redis數(shù)據(jù)庫及與python交互用法,結(jié)合實例形式分析了Redis數(shù)據(jù)庫的基本類型、操作以及Python針對Redis數(shù)據(jù)庫的連接、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • pip安裝提示Twisted錯誤問題(Python3.6.4安裝Twisted錯誤)

    pip安裝提示Twisted錯誤問題(Python3.6.4安裝Twisted錯誤)

    這篇文章主要介紹了pip安裝提示Twisted錯誤問題(Python3.6.4安裝Twisted錯誤),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 基于Python實現(xiàn)文本文件轉(zhuǎn)Excel

    基于Python實現(xiàn)文本文件轉(zhuǎn)Excel

    Excel文件是我們常用的一種文件,在工作中使用非常頻繁。Excel中有許多強(qiáng)大工具,因此用Excel來處理文件會給我們帶來很多便捷。本文就來和大家分享一下Python實現(xiàn)文本文件轉(zhuǎn)Excel的方法,感興趣的可以了解一下
    2022-08-08

最新評論