Differences between revisions 2 and 6 (spanning 4 versions)
Revision 2 as of 2004-08-19 21:53:25
Size: 1022
Editor: Zoom.Quiet
Comment:
Revision 6 as of 2004-08-19 23:21:08
Size: 10316
Editor: Zoom.Quiet
Comment: Wiki小工具
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the POST http://wiki.woodpecker.org.cn/moin.cgi/zhDiveIntoPython HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://wiki.woodpecker.org.cn/moin.cgi/zhDiveIntoPython?action=edit
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible
Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in Appendix G, GNU Free Documentation License.

The example programs in this book are free software; you can redistribute and/or modify them under the terms of the Python license as published by the Python Software Foundation. A copy of the license is included in Appendix H, Python license.


== 章节索引 ==

=== Installing Python ===
 * ["/1."] Installing Python
 * ["/1.1."] Which Python is right for you?
 * ["/1.2."] Python on Windows
 * ["/1.3."] Python on Mac OS X
 * ["/1.4."] Python on Mac OS 9
 * ["/1.5."] Python on RedHat Linux
 * ["/1.6."] Python on Debian GNU/Linux
 * ["/1.7."] Python Installation from Source
 * ["/1.8."] The Interactive Shell
 * ["/1.9."] Summary

=== Your First Python Program ===

 * ["/2."] Your First Python Program
 * ["/2.1."] Diving in
 * ["/2.2."] Declaring Functions
 * ["/2.2.1."] How Python's Datatypes Compare to Other Programming Languages
 * ["/2.3."] Documenting Functions
 * ["/2.4."] Everything Is an Object
 * ["/2.4.1."] The Import Search Path
 * ["/2.4.2."] What's an Object?
 * ["/2.5."] Indenting Code
 * ["/2.6."] Testing Modules

=== Native Datatypes ===
 * ["/3."] Native Datatypes
 * ["/3.1."] Introducing Dictionaries
 * ["/3.1.1."] Defining Dictionaries
 * ["/3.1.2."] Modifying Dictionaries
 * ["/3.1.3."] Deleting Items From Dictionaries
 * ["/3.2."] Introducing Lists
 * ["/3.2.1."] Defining Lists
 * ["/3.2.2."] Adding Elements to Lists
 * ["/3.2.3."] Searching Lists
 * ["/3.2.4."] Deleting List Elements
 * ["/3.2.5."] Using List Operators
 * ["/3.3."] Introducing Tuples
 * ["/3.4."] Declaring variables
 * ["/3.4.1."] Referencing Variables
 * ["/3.4.2."] Assigning Multiple Values at Once
 * ["/3.5."] Formatting Strings
 * ["/3.6."] Mapping Lists
 * ["/3.7."] Joining Lists and Splitting Strings
 * ["/3.7.1."] Historical Note on String Methods
 * ["/3.8."] Summary

=== The Power Of Introspection ===
 * ["/4."] The Power Of Introspection
 * ["/4.1."] Diving In
 * ["/4.2."] Using Optional and Named Arguments
 * ["/4.3."] Using type, str, dir, and Other Built-In Functions
 * ["/4.3.1."] The type Function
 * ["/4.3.2."] The str Function
 * ["/4.3.3."] Built-In Functions
 * ["/4.4."] Getting Object References With getattr
 * ["/4.4.1."] getattr with Modules
 * ["/4.4.2."] getattr As a Dispatcher
 * ["/4.5."] Filtering Lists
 * ["/4.6."] The Peculiar Nature of and and or
 * ["/4.6.1."] Using the and-or Trick
 * ["/4.7."] Using lambda Functions
 * ["/4.7.1."] Real-World lambda Functions
 * ["/4.8."] Putting It All Together
 * ["/4.9."] Summary

=== Objects and Object-Orientation ===
 * ["/5."] Objects and Object-Orientation
 * ["/5.1."] Diving In
 * ["/5.2."] Importing Modules Using from module import
 * ["/5.3."] Defining Classes
 * ["/5.3.1."] Initializing and Coding Classes
 * ["/5.3.2."] Knowing When to Use self and __init__
 * ["/5.4."] Instantiating Classes
 * ["/5.4.1."] Garbage Collection
 * ["/5.5."] Exploring UserDict: A Wrapper Class
 * ["/5.6."] Special Class Methods
 * ["/5.6.1."] Getting and Setting Items
 * ["/5.7."] Advanced Special Class Methods
 * ["/5.8."] Introducing Class Attributes
 * ["/5.9."] Private Functions
 * ["/5.10."] Summary

=== Exceptions and File Handling ===
 * ["/6."] Exceptions and File Handling
 * ["/6.1."] Handling Exceptions
 * ["/6.1.1."] Using Exceptions For Other Purposes
 * ["/6.2."] Working with File Objects
 * ["/6.2.1."] Reading Files
 * ["/6.2.2."] Closing Files
 * ["/6.2.3."] Handling I/O Errors
 * ["/6.2.4."] Writing to Files
 * ["/6.3."] Iterating with for Loops
 * ["/6.4."] Using sys.modules
 * ["/6.5."] Working with Directories
 * ["/6.6."] Putting It All Together
 * ["/6.7."] Summary
=== Regular Expressions ===
 * ["/7."] Regular Expressions
 * ["/7.1."] Diving In
 * ["/7.2."] Case Study: Street Addresses
 * ["/7.3."] Case Study: Roman Numerals
 * ["/7.3.1."] Checking for Thousands
 * ["/7.3.2."] Checking for Hundreds
 * ["/7.4."] Using the {n,m} Syntax
 * ["/7.4.1."] Checking for Tens and Ones
 * ["/7.5."] Verbose Regular Expressions
 * ["/7.6."] Case study: Parsing Phone Numbers
 * ["/7.7."] Summary
=== HTML Processing ===
 * ["/8."] HTML Processing
 * ["/8.1."] Diving in
 * ["/8.2."] Introducing sgmllib.py
 * ["/8.3."] Extracting data from HTML documents
 * ["/8.4."] Introducing BaseHTMLProcessor.py
 * ["/8.5."] locals and globals
 * ["/8.6."] Dictionary-based string formatting
 * ["/8.7."] Quoting attribute values
 * ["/8.8."] Introducing dialect.py
 * ["/8.9."] Putting it all together
 * ["/8.10."] Summary
=== XML Processing ===
 * ["/9."] XML Processing
 * ["/9.1."] Diving in
 * ["/9.2."] Packages
 * ["/9.3."] Parsing XML
 * ["/9.4."] Unicode
 * ["/9.5."] Searching for elements
 * ["/9.6."] Accessing element attributes
 * ["/9.7."] Segue
=== Scripts and Streams ===
 * ["/10."] Scripts and Streams
 * ["/10.1."] Abstracting input sources
 * ["/10.2."] Standard input, output, and error
 * ["/10.3."] Caching node lookups
 * ["/10.4."] Finding direct children of a node
 * ["/10.5."] Creating separate handlers by node type
 * ["/10.6."] Handling command-line arguments
 * ["/10.7."] Putting it all together
 * ["/10.8."] Summary
=== HTTP Web Services ===
 * ["/11."] HTTP Web Services
 * ["/11.1."] Diving in
 * ["/11.2."] How not to fetch data over HTTP
 * ["/11.3."] Features of HTTP
 * ["/11.3.1."] User-Agent
 * ["/11.3.2."] Redirects
 * ["/11.3.3."] Last-Modified/If-Modified-Since
 * ["/11.3.4."] ETag/If-None-Match
 * ["/11.3.5."] Compression
 * ["/11.4."] Debugging HTTP web services
 * ["/11.5."] Setting the User-Agent
 * ["/11.6."] Handling Last-Modified and ETag
 * ["/11.7."] Handling redirects
 * ["/11.8."] Handling compressed data
 * ["/11.9."] Putting it all together
 * ["/11.10."] Summary
=== SOAP Web Services ===
 * ["/12."] SOAP Web Services
 * ["/12.1."] Diving In
 * ["/12.2."] Installing the SOAP Libraries
 * ["/12.2.1."] Installing PyXML
 * ["/12.2.2."] Installing fpconst
 * ["/12.2.3."] Installing SOAPpy
 * ["/12.3."] First Steps with SOAP
 * ["/12.4."] Debugging SOAP Web Services
 * ["/12.5."] Introducing WSDL
 * ["/12.6."] Introspecting SOAP Web Services with WSDL
 * ["/12.7."] Searching Google
 * ["/12.8."] Troubleshooting SOAP Web Services
 * ["/12.9."] Summary
=== Unit Testing ===
 * ["/13."] Unit Testing
 * ["/13.1."] Introduction to Roman numerals
 * ["/13.2."] Diving in
 * ["/13.3."] Introducing romantest.py
 * ["/13.4."] Testing for success
 * ["/13.5."] Testing for failure
 * ["/13.6."] Testing for sanity
=== Test-First Programming ===
 * ["/14."] Test-First Programming
 * ["/14.1."] roman.py, stage 1
 * ["/14.2."] roman.py, stage 2
 * ["/14.3."] roman.py, stage 3
 * ["/14.4."] roman.py, stage 4
 * ["/14.5."] roman.py, stage 5
=== Refactoring ===
 * ["/15."] Refactoring
 * ["/15.1."] Handling bugs
 * ["/15.2."] Handling changing requirements
 * ["/15.3."] Refactoring
 * ["/15.4."] Postscript
 * ["/15.5."] Summary
=== Functional Programming ===
 * ["/16."] Functional Programming
 * ["/16.1."] Diving in
 * ["/16.2."] Finding the path
 * ["/16.3."] Filtering lists revisited
 * ["/16.4."] Mapping lists revisited
 * ["/16.5."] Data-centric programming
 * ["/16.6."] Dynamically importing modules
 * ["/16.7."] Putting it all together
 * ["/16.8."] Summary
=== Dynamic functions ===
 * ["/17."] Dynamic functions
 * ["/17.1."] Diving in
 * ["/17.2."] plural.py, stage 1
 * ["/17.3."] plural.py, stage 2
 * ["/17.4."] plural.py, stage 3
 * ["/17.5."] plural.py, stage 4
 * ["/17.6."] plural.py, stage 5
 * ["/17.7."] plural.py, stage 6
 * ["/17.8."] Summary
=== Performance Tuning ===
 * ["/18."] Performance Tuning
 * ["/18.1."] Diving in
 * ["/18.2."] Using the timeit Module
 * ["/18.3."] Optimizing Regular Expressions
 * ["/18.4."] Optimizing Dictionary Lookups
 * ["/18.5."] Optimizing List Operations
 * ["/18.6."] Optimizing String Manipulation
==== Summary ====
 * ["/18.7."] Summary
 * ["/A."] Further reading
 * ["/B."] A 5-minute review
 * ["/C."] Tips and tricks
 * ["/D."] List of examples
 * ["/E."] Revision history
 * ["/F."] About the book
 * ["/G."] GNU Free Documentation License
 * ["/G.0."] Preamble
 * ["/G.1."] Applicability and definitions
 * ["/G.2."] Verbatim copying
 * ["/G.3."] Copying in quantity
 * ["/G.4."] Modifications
 * ["/G.5."] Combining documents
 * ["/G.6."] Collections of documents
 * ["/G.7."] Aggregation with independent works
 * ["/G.8."] Translation
 * ["/G.9."] Termination
 * ["/G.10."] Future revisions of this license
 * ["/G.11."] How to use this License for your documents
 * ["/H."] Python license
 * ["/H.A."] History of the software
 * ["/H.B."] Terms and conditions for accessing or otherwise using Python
 * ["/H.B.1."] PSF license agreement
 * ["/H.B.2."] BeOpen Python open source license agreement version 1
 * ["/H.B.3."] CNRI open source GPL-compatible license agreement
 * ["/H.B.4."] CWI permissions statement and disclaimer


== Wiki小工具 ==
 * 手工加 Wiki 的页面声明太 SB 了!
 * Python 来帮忙!
{{{
f=open("DinPy",'r')
s=f.read()
#print s
import re
def wikiName(matchobj):
    return " * [\"/%s\"] "%matchobj.group(0)[:-1]
    
key = re.compile(r"(^\w[.|0-9a-zA-Z]+?)\s",re.M)
r=re.sub(key,wikiName,s)
print r
open("DinPy.wiki",'w').write(r)
}}}

深入Python 5.4 版本,中文翻译!

-- Zoom.Quiet [DateTime(2004-08-19T21:52:55Z)] TableOfContents

Dive Into Python

20 May 2004

Copyright © 2000, 2001, 2002, 2003, 2004 Mark Pilgrim

This book lives at http://diveintopython.org/. If you're reading it somewhere else, you may not have the latest version.

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in Appendix G, GNU Free Documentation License.

The example programs in this book are free software; you can redistribute and/or modify them under the terms of the Python license as published by the Python Software Foundation. A copy of the license is included in Appendix H, Python license.

章节索引

Installing Python

  • ["/1."] Installing Python
  • ["/1.1."] Which Python is right for you?
  • ["/1.2."] Python on Windows
  • ["/1.3."] Python on Mac OS X
  • ["/1.4."] Python on Mac OS 9
  • ["/1.5."] Python on RedHat Linux

  • ["/1.6."] Python on Debian GNU/Linux
  • ["/1.7."] Python Installation from Source
  • ["/1.8."] The Interactive Shell
  • ["/1.9."] Summary

Your First Python Program

  • ["/2."] Your First Python Program
  • ["/2.1."] Diving in
  • ["/2.2."] Declaring Functions
  • ["/2.2.1."] How Python's Datatypes Compare to Other Programming Languages
  • ["/2.3."] Documenting Functions
  • ["/2.4."] Everything Is an Object
  • ["/2.4.1."] The Import Search Path
  • ["/2.4.2."] What's an Object?
  • ["/2.5."] Indenting Code
  • ["/2.6."] Testing Modules

Native Datatypes

  • ["/3."] Native Datatypes
  • ["/3.1."] Introducing Dictionaries
  • ["/3.1.1."] Defining Dictionaries
  • ["/3.1.2."] Modifying Dictionaries
  • ["/3.1.3."] Deleting Items From Dictionaries
  • ["/3.2."] Introducing Lists
  • ["/3.2.1."] Defining Lists
  • ["/3.2.2."] Adding Elements to Lists
  • ["/3.2.3."] Searching Lists
  • ["/3.2.4."] Deleting List Elements
  • ["/3.2.5."] Using List Operators
  • ["/3.3."] Introducing Tuples
  • ["/3.4."] Declaring variables
  • ["/3.4.1."] Referencing Variables
  • ["/3.4.2."] Assigning Multiple Values at Once
  • ["/3.5."] Formatting Strings
  • ["/3.6."] Mapping Lists
  • ["/3.7."] Joining Lists and Splitting Strings
  • ["/3.7.1."] Historical Note on String Methods
  • ["/3.8."] Summary

The Power Of Introspection

  • ["/4."] The Power Of Introspection
  • ["/4.1."] Diving In
  • ["/4.2."] Using Optional and Named Arguments
  • ["/4.3."] Using type, str, dir, and Other Built-In Functions
  • ["/4.3.1."] The type Function
  • ["/4.3.2."] The str Function
  • ["/4.3.3."] Built-In Functions
  • ["/4.4."] Getting Object References With getattr
  • ["/4.4.1."] getattr with Modules
  • ["/4.4.2."] getattr As a Dispatcher
  • ["/4.5."] Filtering Lists
  • ["/4.6."] The Peculiar Nature of and and or
  • ["/4.6.1."] Using the and-or Trick
  • ["/4.7."] Using lambda Functions
  • ["/4.7.1."] Real-World lambda Functions
  • ["/4.8."] Putting It All Together
  • ["/4.9."] Summary

Objects and Object-Orientation

  • ["/5."] Objects and Object-Orientation
  • ["/5.1."] Diving In
  • ["/5.2."] Importing Modules Using from module import
  • ["/5.3."] Defining Classes
  • ["/5.3.1."] Initializing and Coding Classes
  • ["/5.3.2."] Knowing When to Use self and init

  • ["/5.4."] Instantiating Classes
  • ["/5.4.1."] Garbage Collection
  • ["/5.5."] Exploring UserDict: A Wrapper Class

  • ["/5.6."] Special Class Methods
  • ["/5.6.1."] Getting and Setting Items
  • ["/5.7."] Advanced Special Class Methods
  • ["/5.8."] Introducing Class Attributes
  • ["/5.9."] Private Functions
  • ["/5.10."] Summary

Exceptions and File Handling

  • ["/6."] Exceptions and File Handling
  • ["/6.1."] Handling Exceptions
  • ["/6.1.1."] Using Exceptions For Other Purposes
  • ["/6.2."] Working with File Objects
  • ["/6.2.1."] Reading Files
  • ["/6.2.2."] Closing Files
  • ["/6.2.3."] Handling I/O Errors
  • ["/6.2.4."] Writing to Files
  • ["/6.3."] Iterating with for Loops
  • ["/6.4."] Using sys.modules
  • ["/6.5."] Working with Directories
  • ["/6.6."] Putting It All Together
  • ["/6.7."] Summary

Regular Expressions

  • ["/7."] Regular Expressions
  • ["/7.1."] Diving In
  • ["/7.2."] Case Study: Street Addresses
  • ["/7.3."] Case Study: Roman Numerals
  • ["/7.3.1."] Checking for Thousands
  • ["/7.3.2."] Checking for Hundreds
  • ["/7.4."] Using the {n,m} Syntax
  • ["/7.4.1."] Checking for Tens and Ones
  • ["/7.5."] Verbose Regular Expressions
  • ["/7.6."] Case study: Parsing Phone Numbers
  • ["/7.7."] Summary

HTML Processing

  • ["/8."] HTML Processing
  • ["/8.1."] Diving in
  • ["/8.2."] Introducing sgmllib.py
  • ["/8.3."] Extracting data from HTML documents
  • ["/8.4."] Introducing BaseHTMLProcessor.py
  • ["/8.5."] locals and globals
  • ["/8.6."] Dictionary-based string formatting
  • ["/8.7."] Quoting attribute values
  • ["/8.8."] Introducing dialect.py
  • ["/8.9."] Putting it all together
  • ["/8.10."] Summary

XML Processing

  • ["/9."] XML Processing
  • ["/9.1."] Diving in
  • ["/9.2."] Packages
  • ["/9.3."] Parsing XML
  • ["/9.4."] Unicode
  • ["/9.5."] Searching for elements
  • ["/9.6."] Accessing element attributes
  • ["/9.7."] Segue

Scripts and Streams

  • ["/10."] Scripts and Streams
  • ["/10.1."] Abstracting input sources
  • ["/10.2."] Standard input, output, and error
  • ["/10.3."] Caching node lookups
  • ["/10.4."] Finding direct children of a node
  • ["/10.5."] Creating separate handlers by node type
  • ["/10.6."] Handling command-line arguments
  • ["/10.7."] Putting it all together
  • ["/10.8."] Summary

HTTP Web Services

  • ["/11."] HTTP Web Services
  • ["/11.1."] Diving in
  • ["/11.2."] How not to fetch data over HTTP
  • ["/11.3."] Features of HTTP
  • ["/11.3.1."] User-Agent
  • ["/11.3.2."] Redirects
  • ["/11.3.3."] Last-Modified/If-Modified-Since
  • ["/11.3.4."] ETag/If-None-Match
  • ["/11.3.5."] Compression
  • ["/11.4."] Debugging HTTP web services
  • ["/11.5."] Setting the User-Agent
  • ["/11.6."] Handling Last-Modified and ETag
  • ["/11.7."] Handling redirects
  • ["/11.8."] Handling compressed data
  • ["/11.9."] Putting it all together
  • ["/11.10."] Summary

SOAP Web Services

  • ["/12."] SOAP Web Services
  • ["/12.1."] Diving In
  • ["/12.2."] Installing the SOAP Libraries
  • ["/12.2.1."] Installing PyXML
  • ["/12.2.2."] Installing fpconst
  • ["/12.2.3."] Installing SOAPpy
  • ["/12.3."] First Steps with SOAP
  • ["/12.4."] Debugging SOAP Web Services
  • ["/12.5."] Introducing WSDL
  • ["/12.6."] Introspecting SOAP Web Services with WSDL
  • ["/12.7."] Searching Google
  • ["/12.8."] Troubleshooting SOAP Web Services
  • ["/12.9."] Summary

Unit Testing

  • ["/13."] Unit Testing
  • ["/13.1."] Introduction to Roman numerals
  • ["/13.2."] Diving in
  • ["/13.3."] Introducing romantest.py
  • ["/13.4."] Testing for success
  • ["/13.5."] Testing for failure
  • ["/13.6."] Testing for sanity

Test-First Programming

  • ["/14."] Test-First Programming
  • ["/14.1."] roman.py, stage 1
  • ["/14.2."] roman.py, stage 2
  • ["/14.3."] roman.py, stage 3
  • ["/14.4."] roman.py, stage 4
  • ["/14.5."] roman.py, stage 5

Refactoring

  • ["/15."] Refactoring
  • ["/15.1."] Handling bugs
  • ["/15.2."] Handling changing requirements
  • ["/15.3."] Refactoring
  • ["/15.4."] Postscript
  • ["/15.5."] Summary

Functional Programming

  • ["/16."] Functional Programming
  • ["/16.1."] Diving in
  • ["/16.2."] Finding the path
  • ["/16.3."] Filtering lists revisited
  • ["/16.4."] Mapping lists revisited
  • ["/16.5."] Data-centric programming
  • ["/16.6."] Dynamically importing modules
  • ["/16.7."] Putting it all together
  • ["/16.8."] Summary

Dynamic functions

  • ["/17."] Dynamic functions
  • ["/17.1."] Diving in
  • ["/17.2."] plural.py, stage 1
  • ["/17.3."] plural.py, stage 2
  • ["/17.4."] plural.py, stage 3
  • ["/17.5."] plural.py, stage 4
  • ["/17.6."] plural.py, stage 5
  • ["/17.7."] plural.py, stage 6
  • ["/17.8."] Summary

Performance Tuning

  • ["/18."] Performance Tuning
  • ["/18.1."] Diving in
  • ["/18.2."] Using the timeit Module
  • ["/18.3."] Optimizing Regular Expressions
  • ["/18.4."] Optimizing Dictionary Lookups
  • ["/18.5."] Optimizing List Operations
  • ["/18.6."] Optimizing String Manipulation

Summary

  • ["/18.7."] Summary
  • ["/A."] Further reading
  • ["/B."] A 5-minute review
  • ["/C."] Tips and tricks
  • ["/D."] List of examples
  • ["/E."] Revision history
  • ["/F."] About the book
  • ["/G."] GNU Free Documentation License
  • ["/G.0."] Preamble
  • ["/G.1."] Applicability and definitions
  • ["/G.2."] Verbatim copying
  • ["/G.3."] Copying in quantity
  • ["/G.4."] Modifications
  • ["/G.5."] Combining documents
  • ["/G.6."] Collections of documents
  • ["/G.7."] Aggregation with independent works
  • ["/G.8."] Translation
  • ["/G.9."] Termination
  • ["/G.10."] Future revisions of this license
  • ["/G.11."] How to use this License for your documents
  • ["/H."] Python license
  • ["/H.A."] History of the software
  • ["/H.B."] Terms and conditions for accessing or otherwise using Python
  • ["/H.B.1."] PSF license agreement
  • ["/H.B.2."] BeOpen Python open source license agreement version 1

  • ["/H.B.3."] CNRI open source GPL-compatible license agreement
  • ["/H.B.4."] CWI permissions statement and disclaimer

Wiki小工具

  • 手工加 Wiki 的页面声明太 SB 了!
  • Python 来帮忙!

f=open("DinPy",'r')
s=f.read()
#print s
import re
def wikiName(matchobj):
    return " * [\"/%s\"] "%matchobj.group(0)[:-1]
    
key = re.compile(r"(^\w[.|0-9a-zA-Z]+?)\s",re.M)
r=re.sub(key,wikiName,s)
print r
open("DinPy.wiki",'w').write(r)

zhDiveIntoPython (last edited 2009-12-25 07:18:54 by localhost)