《Python Cookbook(第2版)中文版》介紹了Python應(yīng)用在各個領(lǐng)域中的一些使用技巧和方法,從最基本的字符、文件序列、字典和排序,到進階的面向?qū)ο缶幊、?shù)據(jù)庫和數(shù)據(jù)持久化、XML處理和Web編程,再到比較高級和抽象的描述符、裝飾器、元類、迭代器和生成器,均有涉及。
python cookbook覆蓋了Python應(yīng)用中的很多常見問題,并提出了通用的解決方案。書中的代碼和方法具有很強的實用性,可以方便地應(yīng)用到實際的項目中,并產(chǎn)生立竿見影的效果。尤為難得的是,python cookbook 第2版 中文版的各位作者都具有豐富的業(yè)界實踐經(jīng)驗,因此,本書不僅給出了對各種問題的解決方案,同時還體現(xiàn)了很多專家的思維方式和良好的編程習(xí)慣,與具體的細節(jié)性知識相比,這部分內(nèi)容無疑是本書的精華。
python cookbook第2版 中文版目錄
第1章 文本 1
引言 1
1.1 每次處理一個字符 6
1.2 字符和字符值之間的轉(zhuǎn)換 7
1.3 測試一個對象是否是類字符串 8
1.4 字符串對齊 10
1.5 去除字符串兩端的空格 11
1.6 合并字符串 11
1.7 將字符串逐字符或逐詞反轉(zhuǎn) 14
1.8 檢查字符串中是否包含某字符集合中的字符 15
1.9 簡化字符串的translate方法的使用 18
1.10 過濾字符串中不屬于指定集合的字符 20
1.11 檢查一個字符串是文本還是二進制 23
1.12 控制大小寫 25
1.13 訪問子字符串 26
1.14 改變多行文本字符串的縮進 29
1.15 擴展和壓縮制表符 31
1.16 替換字符串中的子串 33
1.17 替換字符串中的子串——Python 2.4 34
1.18 一次完成多個替換 36
1.19 檢查字符串中的結(jié)束標(biāo)記 39
1.20 使用Unicode來處理國際化文本 40
1.21 在Unicode和普通字符串之間轉(zhuǎn)換 43
1.22 在標(biāo)準(zhǔn)輸出中打印Unicode字符 45
1.23 對Unicode數(shù)據(jù)編碼并用于XML和HTML 46
1.24 讓某些字符串大小寫不敏感 49
1.25 將HTML文檔轉(zhuǎn)化為文本顯示到UNIX終端上 52
第2章 文件 55
引言 55
2.1 讀取文件 59
2.2 寫入文件 62
2.3 搜索和替換文件中的文本 64
2.4 從文件中讀取指定的行 65
2.5 計算文件的行數(shù) 66
2.6 處理文件中的每個詞 68
2.7 隨機輸入/輸出 70
2.8 更新隨機存取文件 71
2.9 從zip文件中讀取數(shù)據(jù) 73
2.10 處理字符串中的zip文件 74
2.11 將文件樹歸檔到一個壓縮的tar文件 76
2.12 將二進制數(shù)據(jù)發(fā)送到Windows的標(biāo)準(zhǔn)輸出 77
2.13 使用C++的類iostream語法 78
2.14 回退輸入文件到起點 80
2.15 用類文件對象適配真實文件對象 83
2.16 遍歷目錄樹 84
2.17 在目錄樹中改變文件擴展名 85
2.18 從指定的搜索路徑尋找文件 86
2.19 根據(jù)指定的搜索路徑和模式尋找文件 87
2.20 在Python的搜索路徑中尋找文件 88
2.21 動態(tài)地改變Python搜索路徑 89
2.22 計算目錄間的相對路徑 91
2.23 跨平臺地讀取無緩存的字符 93
2.24 在Mac OS X平臺上統(tǒng)計PDF文檔的頁數(shù) 94
2.25 在Windows平臺上修改文件屬性 95
2.26 從OpenOffice.org文檔中提取文本 96
2.27 從微軟Word文檔中抽取文本 97
2.28 使用跨平臺的文件鎖 98
2.29 帶版本號的文件名 100
2.30 計算CRC-64循環(huán)冗余碼校驗 102
第3章 時間和財務(wù)計算 105
引言 105
3.1 計算昨天和明天的日期 111
3.2 尋找上一個星期五 112
3.3 計算日期之間的時段 114
3.4 計算歌曲的總播放時間 115
3.5 計算日期之間的工作日 116
3.6 自動查詢節(jié)日 118
3.7 日期的模糊查詢 121
3.8 檢查夏令時是否正在實行 123
3.9 時區(qū)轉(zhuǎn)換 124
3.10 反復(fù)執(zhí)行某個命令 125
3.11 定時執(zhí)行命令 127
3.12 十進制數(shù)學(xué)計算 129
3.13 將十進制數(shù)用于貨幣處理 130
3.14 用Python實現(xiàn)的簡單加法器 133
3.15 檢查信用卡校驗和 136
3.16 查看匯率 137
第4章 Python技巧 139
引言 139
4.1 對象拷貝 140
4.2 通過列表推導(dǎo)構(gòu)建列表 144
4.3 若列表中某元素存在則返回之 146
4.4 循環(huán)訪問序列中的元素和索引 147
4.5 在無須共享引用的條件下創(chuàng)建列表的列表 148
4.6 展開一個嵌套的序列 149
4.7 在行列表中完成對列的刪除和排序 152
4.8 二維陣列變換 154
4.9 從字典中取值 155
4.10 給字典增加一個條目 157
4.11 在無須過多援引的情況下創(chuàng)建字典 158
4.12 將列表元素交替地作為鍵和值來創(chuàng)建字典 159
4.13 獲取字典的一個子集 161
4.14 反轉(zhuǎn)字典 163
4.15 字典的一鍵多值 164
4.16 用字典分派方法和函數(shù) 166
4.17 字典的并集與交集 167
4.18 搜集命名的子項 169
4.19 用一條語句完成賦值和測試 171
4.20 在Python中使用printf 174
4.21 以指定的概率獲取元素 174
4.22 在表達式中處理異!176
4.23 確保名字已經(jīng)在給定模塊中被定義 178
第5章 搜索和排序 180
引言 180
5.1 對字典排序 185
5.2 不區(qū)分大小寫對字符串列表排序 185
5.3 根據(jù)對象的屬性將對象列表排序 187
5.4 根據(jù)對應(yīng)值將鍵或索引排序 189
5.5 根據(jù)內(nèi)嵌的數(shù)字將字符串排序 192
5.6 以隨機順序處理列表的元素 193
5.7 在增加元素時保持序列的順序 195
5.8 獲取序列中最小的幾個元素 197
5.9 在排序完畢的序列中尋找元素 199
5.10 選取序列中最小的第n個元素 200
5.11 三行代碼的快速排序 203
5.12 檢查序列的成員 206
5.13 尋找子序列 208
5.14 給字典類型增加排名功能 210
5.15 根據(jù)姓的首字母將人名排序和分組 214
第6章 面向?qū)ο缶幊獭?17
引言 217
6.1 溫標(biāo)的轉(zhuǎn)換 223
6.2 定義常量 225
6.3 限制屬性的設(shè)置 227
6.4 鏈?zhǔn)阶值洳樵儭?29
6.5 繼承的替代方案——自動托管 231
6.6 在代理中托管特殊方法 234
6.7 有命名子項的元組 237
6.8 避免屬性讀寫的冗余代碼 239
6.9 快速復(fù)制對象 240
6.10 保留對被綁定方法的引用且支持垃圾回收 243
6.11 緩存環(huán)的實現(xiàn) 245
6.12 檢查一個實例的狀態(tài)變化 249
6.13 檢查一個對象是否包含某種必要的屬性 252
6.14 實現(xiàn)狀態(tài)設(shè)計模式 255
6.15 實現(xiàn)單例模式 257
6.16 用Borg慣用法來避免“單例”模式 259
6.17 Null對象設(shè)計模式的實現(xiàn) 263
6.18 用__init__參數(shù)自動初始化實例變量 266
6.19 調(diào)用超類的__init__方法 267
6.20 精確和安全地使用協(xié)作的超類調(diào)用 270
第7章 持久化和數(shù)據(jù)庫 273
引言 273
7.1 使用marshal模塊序列化數(shù)據(jù) 275
7.2 使用pickle和cPickle模塊序列化數(shù)據(jù) 277
7.3 在Pickling的時候壓縮 280
7.4 對類和實例使用cPickle模塊 281
7.5 Pickling被綁定方法 284
7.6 Pickling代碼對象 286
7.7 通過shelve修改對象 288
7.8 使用Berkeley DB數(shù)據(jù)庫 291
7.9 訪問MySQL數(shù)據(jù)庫 294
7.10 在MySQL數(shù)據(jù)庫中儲存BLOB 295
7.11 在PostgreSQL中儲存BLOB 296
7.12 在SQLite中儲存BLOB 298
7.13 生成一個字典將字段名映射為列號 300
7.14 利用dtuple實現(xiàn)對查詢結(jié)果的靈活訪問 302
7.15 打印數(shù)據(jù)庫游標(biāo)的內(nèi)容 304
7.16 適用于各種DB API模塊的單參數(shù)傳遞風(fēng)格 306
7.17 通過ADO使用Microsoft Jet 308
7.18 從Jython Servlet訪問JDBC數(shù)據(jù)庫 310
7.19 通過Jython和ODBC獲得Excel數(shù)據(jù) 313
第8章 調(diào)試和測試 315
引言 315
8.1 阻止某些條件和循環(huán)的執(zhí)行 316
8.2 在Linux上測量內(nèi)存使用 317
8.3 調(diào)試垃圾回收進程 318
8.4 捕獲和記錄異!320
8.5 在調(diào)試模式中跟蹤表達式和注釋 322
8.6 從traceback中獲得更多信息 324
8.7 當(dāng)未捕獲異常發(fā)生時自動啟用調(diào)試器 327
8.8 簡單的使用單元測試 328
8.9 自動運行單元測試 330
8.10 在Python 2.4中使用doctest和unittest 331
8.11 在單元測試中檢查區(qū)間 334
第9章 進程、線程和同步 336
引言 336
9.1 同步對象中的所有方法 339
9.2 終止線程 342
9.3 將Queue.Queue用作優(yōu)先級隊列 344
9.4 使用線程池 346
9.5 以多組參數(shù)并行執(zhí)行函數(shù) 349
9.6 用簡單的消息傳遞協(xié)調(diào)線程 351
9.7 儲存線程信息 353
9.8 無線程的多任務(wù)協(xié)作 357
9.9 在Windows中探測另一個腳本實例的運行 359
9.10 使用MsgWaitForMultipleObjects處理Windows消息 360
9.11 用popen驅(qū)動外部進程 363
9.12 獲取UNIX Shell命令的輸出流和錯誤流 364
9.13 在UNIX中fork一個守護進程 367
第10章 系統(tǒng)管理 370
引言 370
10.1 生成隨機密碼 371
10.2 生成易記的偽隨機密碼 372
10.3 以POP服務(wù)器的方式驗證用戶 375
10.4 統(tǒng)計Apache中每個IP的點擊率 376
10.5 統(tǒng)計Apache的客戶緩存的命中率 378
10.6 在腳本中調(diào)用編輯器 379
10.7 備份文件 381
10.8 選擇性地復(fù)制郵箱文件 383
10.9 通過郵箱創(chuàng)建一個郵件地址的白名單 384
10.10 阻塞重復(fù)郵件 386
10.11 檢查你的Windows聲音系統(tǒng) 388
10.12 在Windows中注冊和反注冊DLL 388
10.13 檢查并修改Windows自動運行任務(wù) 390
10.14 在Windows中創(chuàng)建共享 391
10.15 連接一個正在運行的Internet Explorer實例 392
10.16 讀取Microsoft Outlook Contacts 393
10.17 在Mac OS X中收集詳細的系統(tǒng)信息 396
第11章 用戶界面 400
引言 400
11.1 在文本控制臺中顯示進度條 402
11.2 避免在編寫回調(diào)函數(shù)時使用lambda 404
11.3 在tkSimpleDialog函數(shù)中使用默認值和區(qū)間 405
11.4 給Tkinter列表框增加拖曳排序能力 406
11.5 在Tkinter部件中輸入一個重音字符 408
11.6 在Tkinter中嵌入內(nèi)聯(lián)的GIF 410
11.7 轉(zhuǎn)換圖片格式 412
11.8 在Tkinter中實現(xiàn)一個秒表 415
11.9 用線程實現(xiàn)GUI和異步I/O的結(jié)合 417
11.10 在Tkinter中使用IDLE的 Tree部件 421
11.11 在Tkinter Listbox中支持單行多值 423
11.12 在Tkinter部件之間復(fù)制Geometry方法和選項 427
11.13 在Tkinter中實現(xiàn)一個帶標(biāo)簽的記事本 429
11.14 使用wxPython實現(xiàn)帶面板的記事本 431
11.15 在Jython中實現(xiàn)一個ImageJ插件 433
11.16 用Swing和Jython來通過URL查看圖片 434
11.17 在Mac OS中獲得用戶輸入 434
11.18 程序化地創(chuàng)建Python Cocoa GUI 437
11.19 用IronPython實現(xiàn)淡入窗口 439
第12章 XML處理 441
引言 441
12.1 檢查XML的格式完好性 443
12.2 計算文檔中標(biāo)簽的個數(shù) 444
12.3 獲得XML文檔中的文本 445
12.4 自動探測XML的編碼 447
12.5 將一個XML文檔轉(zhuǎn)化成Python對象樹 449
12.6 從XML DOM節(jié)點的子樹中刪除僅有空白符的文本節(jié)點 451
12.7 解析Microsoft Excel的XML 452
12.8 驗證XML文檔 454
12.9 過濾屬于指定命名空間的元素和屬性 455
12.10 用SAX合并連續(xù)的文本事件 458
12.11 使用MSHTML來解析XML或HTML 461
第13章 網(wǎng)絡(luò)編程 462
引言 462
13.1 通過Socket數(shù)據(jù)報傳輸消息 464
13.2 從Web抓取文檔 466
13.3 過濾FTP站點列表 467
13.4 通過SNTP協(xié)議從服務(wù)器獲取時間 468
13.5 發(fā)送HTML郵件 469
13.6 在MIME消息中綁入文件 471
13.7 拆解一個分段MIME消息 474
13.8 刪除郵件消息中的附件 475
13.9 修復(fù)Python 2.4的email.FeedParser解析的消息 477
13.10 交互式地檢查POP3郵箱 479
13.11 探測不活動的計算機 482
13.12 用HTTP監(jiān)視網(wǎng)絡(luò) 487
13.13 網(wǎng)絡(luò)端口的轉(zhuǎn)發(fā)和重定向 489
13.14 通過代理建立SSL隧道 492
13.15 實現(xiàn)動態(tài)IP協(xié)議 495
13.16 登錄到IRC并將消息記錄到磁盤 498
13.17 訪問LDAP服務(wù) 500
第14章 Web編程 502
引言 502
14.1 測試CGI是否在工作 503
14.2 用CGI腳本處理URL 506
14.3 用CGI上傳文件 507
14.4 檢查web頁面的存在 509
14.5 通過HTTP檢查內(nèi)容類型 510
14.6 續(xù)傳HTTP下載文件 512
14.7 抓取Web頁面時處理Cookie 513
14.8 通過帶身份驗證的代理進行HTTPS導(dǎo)航 516
14.9 用Jython實現(xiàn)Servlet 517
14.10 尋找Internet Explorer的cookie 519
14.11 生成OPML文件 521
14.12 聚合RSS Feed 524
14.13 通過模板將數(shù)據(jù)放入Web頁面 527
14.14 在Nevow中呈現(xiàn)任意對象 530
第15章 分布式編程 534
引言 534
15.1 實現(xiàn)一個XML-RPC方法調(diào)用 536
15.2 服務(wù)XML-RPC請求 537
15.3 在Medusa中使用XML-RPC 539
15.4 允許XML-RPC服務(wù)被遠程終止 541
15.5 SimpleXMLRPCServer的一些細節(jié) 542
15.6 給一個XML-RPC服務(wù)提供一個wxPython GUI 544
15.7 使用Twisted的Perspective Broker 546
15.8 實現(xiàn)一個CORBA服務(wù)和客戶 549
15.9 使用telnetlib執(zhí)行遠程登錄 551
15.10 使用SSH執(zhí)行遠程登錄 554
15.11 通過HTTPS驗證一個SSL客戶端 557
第16章 關(guān)于程序的程序 559
引言 559
16.1 驗證字符串是否代表著一個合法的數(shù)字 564
16.2 導(dǎo)入一個動態(tài)生成的模塊 565
16.3 導(dǎo)入一個名字在運行時被確定的模塊 567
16.4 將參數(shù)和函數(shù)聯(lián)系起來 568
16.5 組合函數(shù) 571
16.6 使用內(nèi)建的Tokenizer給Python源碼上色 572
16.7 合并和拆解Token 575
16.8 檢查字符串是否有平衡的圓括號 577
16.9 在Python中模擬枚舉 580
16.10 在創(chuàng)建列表推導(dǎo)時引用它自身 583
16.11 自動化py2exe將腳本編譯成Windows可執(zhí)行文件的過程 585
16.12 在UNIX中將主腳本和模塊綁成一個可執(zhí)行文件 587
第17章 擴展和嵌入 590
引言 590
17.1 實現(xiàn)一個簡單的擴展類型 592
17.2 用Pyrex實現(xiàn)一個簡單的擴展類型 597
17.3 在Python中使用C++庫 598
17.4 調(diào)用Windows DLL的函數(shù) 601
17.5 在多線程環(huán)境中使用SWIG生成的模塊 603
17.6 用PySequence_Fast將Python序列轉(zhuǎn)為C數(shù)組 604
17.7 用迭代器逐個訪問Python序列的元素 608
17.8 從Python可調(diào)用的C函數(shù)中返回None 611
17.9 用gdb調(diào)試動態(tài)載入的C擴展 613
17.10 調(diào)試內(nèi)存問題 614
第18章 算法 616
引言 616
18.1 消除序列中的重復(fù) 619
18.2 在保留序列順序的前提下消除其中的重復(fù) 621
18.3 生成回置采樣 625
18.4 生成無回置的抽樣 626
18.5 緩存函數(shù)的返回值 627
18.6 實現(xiàn)一個FIFO容器 629
18.7 使用FIFO策略來緩存對象 631
18.8 實現(xiàn)一個Bag(Multiset)收集類型 634
18.9 在Python模擬三元操作符 637
18.10 計算素數(shù) 640
18.11 將整數(shù)格式化為二進制字符串 642
18.12 以任意數(shù)為基將整數(shù)格式化為字符串 644
18.13 通過法雷分數(shù)將數(shù)字轉(zhuǎn)成有理數(shù) 646
18.14 帶誤差傳遞的數(shù)學(xué)計算 648
18.15 以最大精度求和 651
18.16 模擬浮點數(shù) 653
18.17 計算二維點集的凸包和直徑 656
第19章 迭代器和生成器 660
引言 660
19.1 編寫一個類似range的浮點數(shù)遞增的函數(shù) 663
19.2 從任意可迭代對象創(chuàng)建列表 665
19.3 生成Fibonacci序列 667
19.4 在多重賦值中拆解部分項 669
19.5 自動拆解出需要的數(shù)目的項 670
19.6 以步長n將一個可迭代對象切成n片 672
19.7 通過重疊窗口循環(huán)序列 674
19.8 并行地循環(huán)多個可迭代對象 678
19.9 循環(huán)多個可迭代對象的矢量積 680
19.10 逐段讀取文本文件 683
19.11 讀取帶有延續(xù)符的行 685
19.12 將一個數(shù)據(jù)塊流處理成行流 687
19.13 用生成器從數(shù)據(jù)庫中抓取大記錄集 688
19.14 合并有序序列 690
19.15 生成排列、組合以及選擇 694
19.16 生成整數(shù)的劃分 696
19.17 復(fù)制迭代器 697
19.18 迭代器的前瞻 701
19.19 簡化隊列消費者線程 703
19.20 在另一個線程中運行迭代器 705
19.21 用itertools.groupby來計算匯總報告 706
第20章 描述符、裝飾器和元類 710
引言 710
20.1 在函數(shù)調(diào)用中獲得常新的默認值 712
20.2 用嵌套函數(shù)來編寫property屬性 715
20.3 給屬性值起別名 717
20.4 緩存屬性值 719
20.5 用同一個方法訪問多個屬性 722
20.6 封裝一個方法來給類增加功能 723
20.7 增強所有方法來給類增加功能 726
20.8 在運行時給一個類實例添加方法 728
20.9 檢查接口的實現(xiàn) 730
20.10 在自定義元類中正確地使用__new__和__init__ 732
20.11 允許對List的可變方法的鏈?zhǔn)秸{(diào)用 734
20.12 通過更緊湊的語法使用協(xié)作的超類調(diào)用 736
20.13 不使用__init__來初始化實例屬性 738
20.14 實例屬性的自動初始化 740
20.15 重新加載時自動更新類實例 743
20.16 在編譯時綁定常量 747
20.17 解決元類沖突 752
- PC官方版
- 安卓官方手機版
- IOS官方手機版