<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tinylee的Blog</title>
	<atom:link href="http://blog.donews.com/tinylee/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.donews.com/tinylee</link>
	<description>Be Who You Are</description>
	<lastBuildDate>Fri, 15 Jun 2007 07:59:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Python Cook 1.11 判断字符串中是文本还是字节流</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/15/1175836.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/15/1175836.aspx#comments</comments>
		<pubDate>Fri, 15 Jun 2007 07:59:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/15/1175836.aspx</guid>
		<description><![CDATA[<span style="font-weight: bold;">需求:</span><br /><br />Python可以使用string来保存字符串或任意字节
<div id="mb_0"><wbr></wbr>.我们需要判断字符串中的是文本,还是字节流,目前还没有什么明确的算法来区分两种情况.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />我们需要自己设计出算法来区分字节流和字符串,比如判断是否有超过<wbr></wbr>30%的字节都包含着空字符,控制字符或者非ascii字符<wbr></wbr>(字节高位设置为1),我们必须要自己处理,也要为不同的场景设计<wbr></wbr>出不同的算法: <br /><br /><span style="color: rgb(204, 0, 0);">from _ _future_ _ import division           # ensure / does NOT truncate</span><br style="color: rgb(]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">需求:</span></p>
<p>Python可以使用string来保存字符串或任意字节</p>
<div id="mb_0"><wbr></wbr>.我们需要判断字符串中的是文本,还是字节流,目前还没有什么明确的算法来区分两种情况.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>我们需要自己设计出算法来区分字节流和字符串,比如判断是否有超过<wbr></wbr>30%的字节都包含着空字符,控制字符或者非ascii字符<wbr></wbr>(字节高位设置为1),我们必须要自己处理,也要为不同的场景设计<wbr></wbr>出不同的算法: </p>
<p><span style="color: rgb(204, 0, 0);">from _ _future_ _ import division           # ensure / does NOT truncate</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">import string </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">text_characters = &quot;&quot;.join(map(chr, range(32, 127))) + &quot;\n\r\t\b&quot; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">_null_trans = string.maketrans(&quot;&quot;, &quot;&quot;) </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">def istext(s, text_characters=text_characters<wbr></wbr>, threshold=0.30):     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; # if s contains any null, it&#8217;s not text:     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; if &quot;\0&quot; in s:         </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return False     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; # an &quot;empty&quot; string is &quot;text&quot; (arbitrary but reasonable choice):     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; if not s:         </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return True     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; # Get the substring of s made up of non-text characters</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> &nbsp;&nbsp;&nbsp; t = s.translate(_null_trans, text_characters)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp; &nbsp; # s is &#8216;text&#8217; if less than 30% of its characters are non-text ones:     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; return len(t)/len(s) &lt;= threshold</span></p>
<p>可以通过设置istext的threshold参数来定制算法<wbr></wbr>,也可以通过修改text_characters参数来改变字符集.比如,如果需要判断ISO-8859-1编码的意大利重音字符<wbr></wbr>,就需要添加重音符号给text_characters,如&quot; <tt>&agrave;&Atilde;&uml;&Atilde;&copy;&Atilde;&not;&Atilde;<sup>2</sup>&Atilde;<sup>1</sup></tt>&quot;</p>
<p>上面的代码中需要注意的是,/做整数除法,不会截断小数点<wbr></wbr>,如果要取整除法,请使用//. 默认情况下,如果除数和被除数都是整数,那么结果也是整数.</p>
<p><span style="font-weight: bold;">例如:</p>
<p></span><span style="color: rgb(204, 0, 0);"> &gt;&gt;&gt;5 / 3</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">1</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt;5 // 3</span><br style="color: rgb(204, 0, 0);" /> <span style="color: rgb(204, 0, 0);">1</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt;5.0 / 3</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">1.6666666666666667 </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt;5.0 // 3</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">1.0</span></p>
<p>所以在例子的第一行我们写了:</p>
<p><span style="color: rgb(204, 0, 0);"> from _ _future_ _ import division</span></p>
<p>这保证在我们的代码中,被除数和除数都是整数时,它们的结果依然可<wbr></wbr>以是小数.</p>
<p><span style="font-weight: bold;">相关说明:</span></p>
<p>from __future__ import division 请放在代码的<span style="text-decoration: underline;"> 第一句</span>,我自己安装SOAPpy库时,就因为这个问题不能正常安装<wbr></wbr>,修改代码后安装成功了.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/15/1175836.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.10 从字符串中过滤非指定集合的字符</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/15/1175673.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/15/1175673.aspx#comments</comments>
		<pubDate>Fri, 15 Jun 2007 02:22:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/15/1175673.aspx</guid>
		<description><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></font></p>
<p><font size="2">给定一个字符集合,需要构造一个过滤函数,使对于任意字符串s</font></p>
<div id="mb_0">
<p><wbr></wbr><font size="2">,改方法都能将其,使只包含集合内的字符.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />string的Translate方法是处理这一类问题的最快方法</font><wbr></wbr><font size="2">.然而,要想用translate解决需求提出的问题,我们需要做一些前期工作.translate的第一个参数是一个字</font><wbr></wbr><font size="2">符转换表.我们在这里并不需要转换字符 ,所以我们要让第一个参数表示不做任何转换.第二个参数是指要删除的</font><wbr></wbr><font size]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></font></p>
<p><font size="2">给定一个字符集合,需要构造一个过滤函数,使对于任意字符串s</font></p>
<div id="mb_0">
<p><wbr></wbr><font size="2">,改方法都能将其,使只包含集合内的字符.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>string的Translate方法是处理这一类问题的最快方法</font><wbr></wbr><font size="2">.然而,要想用translate解决需求提出的问题,我们需要做一些前期工作.translate的第一个参数是一个字</font><wbr></wbr><font size="2">符转换表.我们在这里并不需要转换字符 ,所以我们要让第一个参数表示不做任何转换.第二个参数是指要删除的</font><wbr></wbr><font size="2">字符串,因为我们的需求不是要删除字符,而是要保留字符,所以我们要构造出我们不需要的字符的集合.对于这样的要求,使用内函数是比较方便的,如在上一节,我们也实现了类似的需求.<br /></font></p>
<p style="color: rgb(204, 0, 0);"><font size="2">import string<br /># 构造一个字符转换表,表示不做任何转换.<br /><span> allchars = string.maketrans(&#8221;, &#8221;)</span><br />def makefilter(keep):<br />    # 构造出我们不需要的字符集合<br />&nbsp;&nbsp;&nbsp;&nbsp;    <span>delchars = allchars.translate(allchars, keep)</span><br />    # 定义内函数,返回我们需要的过滤器.<br />&nbsp;&nbsp;&nbsp;&nbsp;     def thefilter(s):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        return s.translate(allchars, delchars)<br />&nbsp;&nbsp;&nbsp;&nbsp;    return thefilter<br />if _ _name_ _ == &#8216;_ _main_ _&#8217;:<br />    just_vowels = makefilter(&#8216;aeiouy&#8217;)<br />    print just_vowels(&#8216;four score and seven years ago&#8217;) <br /># 输出: <strong>ouoeaeeyeaao</strong><br />    print just_vowels(&#8216;tiger, tiger burning bright&#8217;)<br /># 输出: <strong>ieieuii</strong></font></p>
<p><font size="2">理解这 一节的关键是理解string的maketrans和transl</font><wbr></wbr><font size="2">ate的实现机制.translate返回了一个字符串s的副本,在副本中,处于第一个参数(转换表)中的字符被替换了,而处于第二个参数中的字符被删除了.maketrans方法是用来</font><wbr></wbr><font size="2">构造字符转换表的.所谓字符转换表t是一个包含256个字符的字符</font><wbr></wbr><font size="2">串: 当你把t做为translate的第一个参数时,s中的每一个字符</font><wbr></wbr><font size="2">c都被转换为t[ord(c)].<br />在这一节中,我们首先分写了问题,将它划分为与处理和执行两个部分</font><wbr></wbr><font size="2">,这样不但减少了问题的复杂度,也提高了执行的效率.allchars是可重用的,可以被所有的过滤函数共享.而translate的第二个参数de</font><wbr></wbr><font size="2">lete,我们使用了方法工厂来构造,也使用translate来达到最高</font><wbr></wbr><font size="2">的效率.</p>
<p>如果把allchars做为makefilter的参数</font><wbr></wbr><font size="2">,这样的过滤器能返回排序好的字符串,而且删除了重复字符. <br />可以这样来定义:</p>
<p><span style="color: rgb(204, 0, 0);">def canonicform(s):     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; return makefilter(s)(allchars)</span></p>
<p>其中return那一句,s做为makefilter的参数</font><wbr></wbr><font size="2">,而allchars做为thefilter的参数.<br />也可以使用lambda函数写法来定义内函数:</p>
<p><span style="color: rgb(204, 0, 0);"> return lambda s: s.translate(allchars, delchars)</span></p>
<p>当然,使用def来定义使得代码更清晰,易读.</p>
<p>对于这个需求,我们也会想到用set来处理,然而,使用translate处理字符串是最高效的.当然其局限性也显而</font><wbr></wbr><font size="2">易见,它只能处理ascii常规字符,不能处理unicode.</p>
<p>为了使得unicode字符串也能满足我们的需求</font><wbr></wbr><font size="2">,还要做一些与处理工作,unicode的translate方法</font><wbr></wbr><font size="2">只有一个参数:一个map或者一个序列,它包含了字符串中字符的序</font><wbr></wbr><font size="2">列,表中不包含的字符,就直接复制到结果中去,对于要删除的字符</font><wbr></wbr><font size="2">,在map中对应的值是None. </p>
<p>一般来说,我们使用dict或list做为unicode字符串transl</font><wbr></wbr><font size="2">ate方法的参数.但对于这一节的需求(保留一些字符,删除其余的),我们要初始化一个巨大的map,然后把它们的值都映射为None.相反,我们构造一个简单的类,让它实现__getitem__方法.</font><wbr></wbr><font size="2">__getitem__方法是让外界可以通过[]来索引序列元素的</font><wbr></wbr><font size="2">方法,可以理解为重载了[].同时,对于简单类,我们可以使用别名来使用它.为了使类可以直接执行,我们让它实现恶劣__call__方法. </p>
<p><span style="color: rgb(204, 0, 0);">import sets</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">class Keeper(object):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> &nbsp;&nbsp;&nbsp; def _ _init_ _(self, keep):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.keep = sets.Set(map(ord, keep))</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> &nbsp;&nbsp;&nbsp; def _ _getitem_ _(self, n):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if n not in self.keep:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return None </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unichr(n)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; def _ _call_ _(self, s):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unicode(s).translate(self)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">makefilter = Keeper</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> if _ _name_ _ == &#8216;_ _main_ _&#8217;:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; just_vowels = makefilter(&#8216;aeiouy&#8217;)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> &nbsp;&nbsp;&nbsp; print just_vowels(u&#8217;four score and seven years ago&#8217;)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"># 输出: <span style="font-weight: bold;">ouoeaeeyeaao     </span></span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; print just_vowels(u&#8217;tiger, tiger burning bright&#8217;) </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"># 删除:</span><strong style="color: rgb(204, 0, 0);"> ieieuii</strong></p>
<p>相关说明:</p>
<p><span style="font-weight: bold;">translate(&#8230;)</span><br />&nbsp;&nbsp;&nbsp;  S.translate(table) -&gt; unicode<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a copy of the string S, where all characters have been mapped<br />&nbsp;&nbsp;&nbsp; through the given translation table, which must be a mapping of<br />&nbsp;&nbsp;&nbsp; Unicode ordinals to Unicode ordinals, Unicode strings or None. <br />&nbsp;&nbsp;&nbsp; Unmapped characters are left untouched. Characters mapped to None<br />&nbsp;&nbsp;&nbsp; are deleted.</font></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/15/1175673.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.9 简化使用string的translate方法</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/14/1175344.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/14/1175344.aspx#comments</comments>
		<pubDate>Thu, 14 Jun 2007 04:00:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/14/1175344.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:</span><br /><br />想使用强大的string的<span style="font-family: monospace;">tr</span><tt>anslate</tt>方法,却困惑于它复杂的用法和参数,也不知道string.maketrans的工作机制</font>
<div id="mb_0"><wbr></wbr><font size="2">.我们需要的只是简单的使用它们的功能.<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">讨论:</span><br /><br />我们在这里简单实现一个方法工厂,可以处理常用的这一类的问题:<br /></font>
<pre><font size="2"><span style="color: rgb(204, 0, 0);">import string</span><br style="color: rgb(204, ]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></p>
<p>想使用强大的string的<span style="font-family: monospace;">tr</span><tt>anslate</tt>方法,却困惑于它复杂的用法和参数,也不知道string.maketrans的工作机制</font></p>
<div id="mb_0"><wbr></wbr><font size="2">.我们需要的只是简单的使用它们的功能.<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">讨论:</span></p>
<p>我们在这里简单实现一个方法工厂,可以处理常用的这一类的问题:<br /></font></p>
<pre><font size="2"><span style="color: rgb(204, 0, 0);">import string</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">def translator(frm='', to='', delete='', keep=None): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    if len(to) == 1:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        to = to * len(frm)</span><br style="color: rgb(204, 0, 0);" /> <span style="color: rgb(204, 0, 0);">    trans = string.maketrans(frm, to)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    if keep is not None:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">         allchars = string.maketrans('', '')</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        delete = allchars.translate(allchars, keep.translate(allchars, delete))</span> <br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    def translate(s):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        return s.translate(trans, delete)</span><br style="color: rgb(204, 0, 0);" /> <span style="color: rgb(204, 0, 0);">    return translate</span>

下面是一些translator的用法:

可以只保留需要的字符

<span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; digits_only = translator(keep=string.digits)</span><br style="color: rgb(204, 0, 0);" /> <span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; digits_only('Chris Perkins : 224-7992')</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">'2247992'</span> 可以过滤指定的字符: </font></pre>
<p><font size="2"><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; no_digits = translator(delete=string.digits)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; no_digits(&#8216;Chris Perkins : 224-7992&#8242;) </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">&#8216;Chris Perkins : -&#8217;</span><span style="color: rgb(204, 0, 0); font-style: italic;"> </span><br /></font></p>
<p><font size="2">可以替换指定的字符:<br /></font> </p>
<p><font size="2"><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; digits_to_hash = translator(from=string.digits, to=&#8217;#')</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; digits_to_hash(&#8216;Chris Perkins : 224-7992&#8242;) </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">&#8216;Chris Perkins : ###-####&#8217;</span><span style="color: rgb(204, 0, 0); font-style: italic;"> </span><span style="font-family: monospace;"></p>
<p></span><span style="font-weight: bold;">相关说明:</span></p>
<p>内部方法,在上面的例子中,我们使用了一个内部方法来实现方法工厂</font><wbr></wbr><font size="2">,返回一个变量来表示内部方法,然后接收参数来实现功能.<br />最简单的方法工厂可以写成下面这个样子:<br /><span style="color: rgb(204, 0, 0);"> def make_adder(basenum):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; def adder(args): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return args+basenum     </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; return adder</span></p>
<p>比如我们要做一个以100为基数的加法器,可以这样使用:</p>
<p><span style="color: rgb(204, 0, 0);">base100 = make_addr(100)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">print base100(45)</span><br style="color: rgb(204, 0, 0); font-style: italic;" /><span style="color: rgb(204, 0, 0); font-style: italic;">&gt;&gt;&gt;145</span></p>
<p>讨论中的例子,我们返回了自己定制的translate方法</font>  <wbr></wbr><font size="2">,它以我们自己定制的delete为参数,来实现我们的keep需</font><wbr></wbr><font size="2">求:<br /></font></p>
<pre><font size="2"><span style="color: rgb(204, 0, 0);">allchars = string.maketrans('', '')

</span>返回了包含所有字符的列表</font></pre>
<p><font size="2"><span style="color: rgb(204, 0, 0);"> keep.translate(allchars, delete)</span></p>
<p>返回了过滤掉删除字符的字符表.<br /></font></p>
<pre><font size="2"><span style="color: rgb(204, 0, 0);">allchars.translate(allchars, keep.translate(allchars, delete))</span></font></pre>
<p><font size="2">又做了一次运算,现在剩下的只是要删除的字符了.</p>
<p>如果keep和delete不同时使用,可以这样写: <br /></font></p>
<pre><font size="2"><span style="color: rgb(204, 0, 0);">allchars = string.maketrans('', '')</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">delete = allchars.translate(allchars, keep)</span> </font></pre>
<p><font size="2"><span style="font-weight: bold;">maketrans(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; maketrans(frm, to) -&gt; string <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a translation table (a string of 256 bytes long)<br />&nbsp;&nbsp;&nbsp; suitable for use in string.translate.&nbsp; The strings frm and to<br />&nbsp;&nbsp;&nbsp; must be of the same length.<br /><br style="font-weight: bold;" /><span style="font-weight: bold;"> translate(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.translate(table [,deletechars]) -&gt; string <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a copy of the string S, where all characters occurring<br />&nbsp;&nbsp;&nbsp; in the optional argument deletechars are removed, and the<br />&nbsp;&nbsp;&nbsp; remaining characters have been mapped through the given<br />&nbsp;&nbsp;&nbsp; translation table, which must be a string of length 256. </font></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/14/1175344.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.8 判断字符串内是否包含指定集合的字符</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/14/1175343.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/14/1175343.aspx#comments</comments>
		<pubDate>Thu, 14 Jun 2007 03:59:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/14/1175343.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:</span><br /><br />给定一个字符集合,需要判断在特定字符串内,是否包含该集合的字符</font>
<div id="mb_0"><wbr></wbr><font size="2">.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />最简单,直观,效率最高的算法就是使用循环迭代.而且还具有通用性,不仅适用与字符串,也适用与其它序列.<br /></font>
<pre><font size="2"><span style="color: rgb(204, 0, 0);"> def containsAny(seq, aset):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    &#34;&#34;&#34; Check whether sequence seq ]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></p>
<p>给定一个字符集合,需要判断在特定字符串内,是否包含该集合的字符</font></p>
<div id="mb_0"><wbr></wbr><font size="2">.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>最简单,直观,效率最高的算法就是使用循环迭代.而且还具有通用性,不仅适用与字符串,也适用与其它序列.<br /></font></p>
<pre><font size="2"><span style="color: rgb(204, 0, 0);"> def containsAny(seq, aset):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    &quot;&quot;&quot; Check whether sequence seq contains ANY of the items in aset. &quot;&quot;&quot;</span><br style="color: rgb(204, 0, 0);" /> <span style="color: rgb(204, 0, 0);">    for c in seq:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        if c in aset: return True</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">     return False</span>

当然,也可以使用更高级的办法,用Python提供的迭代工具:

<span style="color: rgb(204, 0, 0);">import itertools</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">def containsAny(seq, aset): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    for item in itertools.ifilter(aset._ _contains_ _, seq):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        return True </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    return False</span>

另:对于和集合相关的问题,都可以使用集合来解决.对于我们需求,可以使用下面的方式来实现:

<span style="color: rgb(204, 0, 0);">def containsAny(seq, aset): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    return bool(set(aset).intersection<wbr></wbr>(seq))</span>

这个方法返回了两个集合的交集,也就是说,两个集合中所有的元素都</font><wbr></wbr><font size="2">进行了判断,从效率上讲,没有上面提供的两种方法好.然而,如果需求是需要判断集合内的字符是否都包含在字符串内</font><wbr></wbr><font size="2">,使用集合提供的方法会更方便一些: 

<span style="color: rgb(204, 0, 0);">def containsAll(seq, aset):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    &quot;&quot;&quot; Check whether sequence seq contains ALL the items in aset. &quot;&quot;&quot; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    return not set(aset).difference(seq)</span>

如果需求是判读字符串内是否只包含集合内的字符,可以用下面的算法</font><wbr></wbr><font size="2">:

<span style="color: rgb(204, 0, 0);">def containsOnly(seq, aset): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    &quot;&quot;&quot; Check whether sequence seq contains ONLY items in aset. &quot;&quot;&quot;</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">     for c in seq:</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">        if c not in aset: return False</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">    return True </span></font></pre>
<p><font size="2">相关说明:</p>
<p><span style="font-weight: bold;">intersection(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; Return the intersection of two sets as a new set.<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; (i.e. all elements that are in both sets.)</p>
<p><span style="font-weight: bold;"> difference(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; Return the difference of two sets as a new set.<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; (i.e. all elements that are in this set but not the other.)</font></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/14/1175343.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.7 反转字符串中的字符或单词</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/14/1175255.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/14/1175255.aspx#comments</comments>
		<pubDate>Thu, 14 Jun 2007 01:27:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/14/1175255.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:<br /><br /></span>反转字符串中的单词或字符.<br /><br /><span style="font-weight: bold;">讨论:<br /><br /></span>如果是别的语言,通常的做法是写一个循环,然后利用临时变量,构造反转后的字符串.对于字符的反转,在Python中有一个非常简便的方法,利用切片功能.<br /><br /><span style="color: rgb(204, 0, 0);"> newstring = astring[::-1]</span><br /><br />这样,就能获得astring的反转字符串了.<br />对于单词的反转,可以利用序列的reverse方法:<br /><br /><span style="color: rgb(204, 0, 0);">words = astring.split()</span><br style="color: rgb(204, 0, 0);" /><span style="c]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</p>
<p></span>反转字符串中的单词或字符.</p>
<p><span style="font-weight: bold;">讨论:</p>
<p></span>如果是别的语言,通常的做法是写一个循环,然后利用临时变量,构造反转后的字符串.对于字符的反转,在Python中有一个非常简便的方法,利用切片功能.</p>
<p><span style="color: rgb(204, 0, 0);"> newstring = astring[::-1]</span></p>
<p>这样,就能获得astring的反转字符串了.<br />对于单词的反转,可以利用序列的reverse方法:</p>
<p><span style="color: rgb(204, 0, 0);">words = astring.split()</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);"> words.reverse()</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">newstring = &#8216; &#8216;.join(wrods)</span></p>
<p>这里我们假设单词之间是用空白字符分隔的.空白字符包括空格,回车,TAB等.<br />用一个语句表示的方法:<br /><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">newstring = &#8216; &#8216;.join(astring.split()[::-1])</span></p>
<p>这里我们用到了上面说的第一种方法.<br />看了上面两个方法,需要注意的时,string没有reverse方法.可能因为有了[::-1]已经满足了需求了吧.</p>
<p>如果单词间的分隔符不是空白字符,可以使用正则式来实现需求,如:</p>
<p><span style="color: rgb(204, 0, 0);">import re</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">newstring = re.split(r&#8217;(\s+)&#8217;, astring)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 用&#8217;()&#8217;分隔</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">newstring.reverse( )</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">newstring = &#8221;.join(newstring) &nbsp;</span></p>
<p>或者更简单的写法:</p>
<p><span style="color: rgb(204, 0, 0);"> newstring = &#8221;.join(re.split(r&#8217;(\s+)&#8217;, astring)[::-1])</span></p>
<p>当然,如果这样写,就不符合Python的简单清晰的原则了.</p>
<p><span style="font-weight: bold;">相关说明:</span></p>
<p><span style="font-weight: bold;">split(&#8230;)</span> <br />&nbsp;&nbsp;&nbsp; S.split([sep [,maxsplit]]) -&gt; list of strings<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; Return a list of the words in the string S, using sep as the<br />&nbsp;&nbsp;&nbsp; delimiter string.&nbsp; If maxsplit is given, at most maxsplit<br />&nbsp;&nbsp;&nbsp; splits are done. If sep is not specified or is None, any <br />&nbsp;&nbsp;&nbsp; whitespace string is a separator.</p>
<p><span style="font-weight: bold;">join(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.join(sequence) -&gt; string<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; Return a string which is the concatenation of the strings in the<br />&nbsp;&nbsp;&nbsp; sequence.&nbsp; The separator between elements is S. </p>
<p><span style="font-weight: bold;">reverse(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; L.reverse() &#8212; reverse *IN PLACE*</p>
<p>关于正则式的说明请看后续的章节.  </font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/14/1175255.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.6 拼接字符串</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/14/1175253.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/14/1175253.aspx#comments</comments>
		<pubDate>Thu, 14 Jun 2007 01:26:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/14/1175253.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:<br /><br /></span>要将一些字符串拼接成一个字符串.<br /><br /><span style="font-weight: bold;">讨论:<br /><br /></span>最容易想到的方法是使用'+':<br /><br /><span style="color: rgb(204, 0, 0);">newstring = str1 + ' ' + str2 + ' ' + str3 + '!' </span><br /><br />然而在Python中,不推荐使用上面的做法,这可能造成代码的效</font>
<div id="mb_0"><wbr></wbr><font size="2">率底下.<br />string对象是不可改变的字符序列,一个'+'操作</font><wbr></wbr><font size="2">,要先构造一个新的string对象,然后再做字符串的拼接,而不是直接改变原有的字符串.当一个操作完成后,临时使用的对象又被释放掉了]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</p>
<p></span>要将一些字符串拼接成一个字符串.</p>
<p><span style="font-weight: bold;">讨论:</p>
<p></span>最容易想到的方法是使用&#8217;+':</p>
<p><span style="color: rgb(204, 0, 0);">newstring = str1 + &#8216; &#8216; + str2 + &#8216; &#8216; + str3 + &#8216;!&#8217; </span></p>
<p>然而在Python中,不推荐使用上面的做法,这可能造成代码的效</font></p>
<div id="mb_0"><wbr></wbr><font size="2">率底下.<br />string对象是不可改变的字符序列,一个&#8217;+'操作</font><wbr></wbr><font size="2">,要先构造一个新的string对象,然后再做字符串的拼接,而不是直接改变原有的字符串.当一个操作完成后,临时使用的对象又被释放掉了.也就是说,如果有N字符串要拼在一起,使用&#8217;+'操作的话,就要生成N</font><wbr></wbr><font size="2">-1次临时string对象,做N-1次拼接运算,然后再释放这N-1个临时对象.这样的效率是可想而知的 .<br />根据上面的说明,推荐使用Python的内建方法:join.</p>
<p><span style="color: rgb(204, 0, 0);">newstring = &#8216; &#8216;.join([str1,str2,str3,'!'])</span></p>
<p>类似的,可以使用另外一种方法来实现我们的需求.<br />在Python中,可以使用字符串格式化符号:%</font><wbr></wbr><font size="2">.像C的printf一样的使用方法:</p>
<p><span style="color: rgb(204, 0, 0);">newstring =&nbsp; &#8216;%s %s %s!&#8217; %(str1,str2,str3) </span></p>
<p>这个方法不但适用字符串的拼接,也适合与多种类型构成字符串,如:</p>
<p><span style="color: rgb(204, 0, 0);">newstring = &#8216;%d + %d = %d %s&#8217; %(1,2,3,&#8217;done&#8217;) </span></p>
<p>两种方法各有各的优点:join适用于要拼接的字符串个数不定</font> <wbr></wbr><font size="2">,且连接字符确定的情况;而%适用于</p>
<p><span style="font-weight: bold;">相关说明:</p>
<p>join(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.join(sequence) -&gt; string<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; Return a string which is the concatenation of the strings in the <br />&nbsp;&nbsp;&nbsp; sequence.&nbsp; The separator between elements is S.</font></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/14/1175253.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我的SciTE的配置文件</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/13/1174992.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/13/1174992.aspx#comments</comments>
		<pubDate>Wed, 13 Jun 2007 03:56:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/13/1174992.aspx</guid>
		<description><![CDATA[<font size="2">#~ 中文字符乱码正确显示<br />#linux下面使用:code.page=65001<br />if PLAT_WIN<br />&#160;&#160;&#160; code.page=936<br />&#160;&#160;&#160; output.code.page=936<br />if PLAT_GTK<br />&#160;&#160;&#160; code.page=65001<br />&#160;&#160;&#160; output.code.page=65001<br />#~ Big5:code.page=950<br />#~ 最大化<br />position.width=-1 <br />position.height=-1<br />#~ 滚动条<br />end.at.last.line=0<br />#~ 工具条<br />#~ toolbar.visible=1<br />#~ 状态栏<br />statusbar.visible=1<br />#~ 自动补全xml结束标签<br />xml.auto.clo]]></description>
			<content:encoded><![CDATA[<p><font size="2">#~ 中文字符乱码正确显示<br />#linux下面使用:code.page=65001<br />if PLAT_WIN<br />&nbsp;&nbsp;&nbsp; code.page=936<br />&nbsp;&nbsp;&nbsp; output.code.page=936<br />if PLAT_GTK<br />&nbsp;&nbsp;&nbsp; code.page=65001<br />&nbsp;&nbsp;&nbsp; output.code.page=65001<br />#~ Big5:code.page=950<br />#~ 最大化<br />position.width=-1 <br />position.height=-1<br />#~ 滚动条<br />end.at.last.line=0<br />#~ 工具条<br />#~ toolbar.visible=1<br />#~ 状态栏<br />statusbar.visible=1<br />#~ 自动补全xml结束标签<br />xml.auto.close.tags=1<br />#~ 记录最近打开的文件<br />save.recent=1<br />#~ 显示行号<br />line.margin.visible=1 <br />#~ 设置状态栏<br />statusbar.text.1= [ 行: $(LineNumber) , 列: $(ColumnNumber) ,共:$(NbOfLines) ] ($(OverType)) | ($(EOLMode))<br />#~ 当前行<br />caret.line.back=#E8F2FE<br />#~ 文档背景,保护眼睛<br />style.*.32=$(font.base),back:#CCE8CF<br />#~ 行号字符宽度 <br />line.margin.width=3+<br />#~ 一个文档时隐藏tab栏<br />tabbar.hide.one=1<br />#~ 多行tab栏模式<br />tabbar.multiline=1 </p>
<p>#~ 当前文件被外部修改时自动重新载入<br />load.on.activate=1<br />#~ 当load.on.activate=1时，且本条设1，重新载入时会先询问你<br />are.you.sure.on.reload=1 <br />#~ 只有一个scite实例<br />check.if.already.open=1<br />#~ 自动补全<br />autocompleteword.automatic=1<br />#~ 调整编辑区和输出区的大小<br />magnification=1<br />output.magnification=1<br />#~ 输出栏在下面<br />split.vertical=0<br />#~ 执行命令前清空输出区的内容<br />clear.before.execute=1 <br />#~ 缓冲区个数<br />buffers=18<br />#~ 字体大小<br />font.base=font:Verdana,size:9</p>
<p>#~启用折叠<br />fold=1<br />#~编辑区折叠列初始化宽度.<br />fold.margin.width=16<br />#~折叠符号,0为三角形，1为展开-收缩+, 2为圆形，3方形。一般选2<br />fold.symbols=2<br />#~初始化是否折叠。一般设成1,这样再长的文章</font></p>
<div id="mb_0"><wbr></wbr><font size="2">，因为只显示结构，看上去了一目了然。 <br />#~ fold.on.open=1<br />#~设成1，伸展时折叠符号区有一条短线指示折叠位置</font><wbr></wbr><font size="2">。收缩时显示一条长线。<br />fold.compact=1<br />#~xml和html文件折叠<br />fold.html=1</p>
<p>#~标题栏显示信息，0为文件名，1为全路径，2为显示文件名和目</font><wbr></wbr><font size="2">录名。<br />title.full.path=1<br />#~一个tab占几个空格，一般设成4。<br />tabsize=4<br />#~一个自动缩进占几个空格，一般为4 <br />indent.size=4<br />#~1为初始化时自动换行<br />wrap=０</p>
<p>#~设置中文自动提示用<br />chars.cn=的一是了不在有人上这大我国来们和个他中说到地为以子小就时全可下</font><wbr></wbr><font size="2">要十生会也出年得你主用那道学工多去发作自好过动对行里能二天三同</font><wbr></wbr><font size="2">成活太事面民日家方后都于之分经种还看产所起把进前着没而样部长又</font><wbr></wbr><font size="2">问法从本定见两新现如么力等电开五心只实社水外政很高月业当义些加</font><wbr></wbr><font size="2">老着四头因向理点合明无机意使第正度物想体此知关制然其表重化应各</font><wbr></wbr><font size="2">但者间百比什儿公做九相气命西话将内与由利今手平量员回情几最八级</font><wbr></wbr><font size="2">位结性代教次路党六便原军总走象口七先常题入给己队战果完反白建革</font><wbr></wbr><font size="2">立少文打论门东女放期真数展资通农名解叫提或山线条别万系已变形它</font><wbr></wbr><font size="2">边阶报官决她及争声北求世耍美再听才运必安取被南接华干区身济共计</font><wbr></wbr><font size="2">特改吃书马组界议车并海育思设件光强品直许造务流治领联金记任受极</font><br />
<script type="text/javascript"><!--
D(["mb","\u003cWBR\>基质指帮目市快千导花科难深保住统管处认志图则研劳每场带亲至根更\u003cWBR\>斗收信究且怎近非料何呢热术夫眼交布石达步拉众省风据奸增程火团字\u003cWBR\>却油米委色式切望器办群观算调母土较请元爱持清广张连压觉识林际举\u003cWBR\>即死专局类空单权毛师商孩装批府找往王校该未席约照易神克号京转须\u003cWBR\>半习青早规验拿服节精树传备钱技讲告德参斯具织集病友谈示积亚复厂\u003cWBR\>越支婚历兵胜选整铁势笑院板球河吗除准况影倒若格断甚速言采哪离县\u003cWBR\>写台古远 \u003cbr\>#~ 缩进可见\u003cbr\>view.indentation.whitespace\u003d1\u003cbr\>\u003cbr\>#~长行指示\u003cbr\>edge.column\u003d200\u003cbr\>edge.mode\u003d1\u003cbr\>edge.colour\u003d#F9F9F9\u003cbr\>\u003cbr\>#~设置错误行的前景色和背景色\u003cbr\>error.marker.fore\u003d#0000A0\u003cbr\>error.marker.back\u003d#DADAFF\u003cbr\>#~ 定义菜单\u003cbr\>user.context.menu\u003d\\ \u003cbr\>||\\\u003cbr\>UTF-8|IDM_ENCODING_UCOOKIE|\\\u003cbr\>CodePage|IDM_ENCODING_DEFAULT|\u003cbr\>\u003cbr\>#~ 定义api文件\u003cbr\>if PLAT_WIN\u003cbr\>    api.$(file.patterns.java)\u003d$(SciteDefaultHome)\\api\u003cWBR\>\\java150.api\u003cbr\>    api.$(file.patterns.cs)\u003d$(SciteDefaultHome)\\api\\cs\u003cWBR\>.api \u003cbr\>    api.$(file.patterns.cpp)\u003d$(SciteDefaultHome)\\api\\cpp\u003cWBR\>.api\u003cbr\>    api.$(\u003ca href\u003d\"http://file.patterns.py\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>file.patterns.py\u003c/a\>)\u003d$(SciteDefaultHome)\\api\u003cWBR\>\\python.api\u003cbr\>    api.$(file.patterns.php)\u003d$(SciteDefaultHome)\\api\\php\u003cWBR\>.api \u003cbr\>if PLAT_GTK\u003cbr\>    api.$(file.patterns.java)\u003d$(SciteDefaultHome)/api\u003cWBR\>/java150.api\u003cbr\>    api.$(file.patterns.cs)\u003d$(SciteDefaultHome)/api/cs\u003cWBR\>.api\u003cbr\>    api.$(file.patterns.cpp)\u003d$(SciteDefaultHome)/api/cpp\u003cWBR\>.api\u003cbr\>    api.$( \u003ca href\u003d\"http://file.patterns.py\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>file.patterns.py\u003c/a\>)\u003d$(SciteDefaultHome)/api\u003cWBR\>/python.api\u003cbr\>    api.$(file.patterns.php)\u003d$(SciteDefaultHome)/api/php\u003cWBR\>.api\u003cbr\>#~ 定义缩写文件\u003cbr\>if PLAT_WIN\u003cbr\>    abbreviations.*.cpp\u003d$(SciteDef\u003cWBR\>aultHome)\\abbrev\\cppAbbrev\u003cWBR\>.properties \u003cbr\>    abbreviations.*.cs\u003d$(SciteDefa\u003cWBR\>ultHome)\\abbrev\\csAbbrev\u003cWBR\>.properties\u003cbr\>    abbreviations.*.java\u003d$\u003cWBR\>(SciteDefaultHome)\\abbrev\u003cWBR\>\\javaAbbrev.properties\u003cbr\>if PLAT_GTK\u003cbr\>    abbreviations.*.cpp\u003d$(SciteDef\u003cWBR\>aultHome)/abbrev/cppAbbrev\u003cWBR\>.properties \u003cbr\>    abbreviations.*.cs\u003d$(SciteDefa\u003cWBR\>ultHome)/abbrev/csAbbrev\u003cWBR\>.properties\u003cbr\>    abbreviations.*.java\u003d$\u003cWBR\>(SciteDefaultHome)/abbrev\u003cWBR\>/javaAbbrev.properties  ",1]
);</p>
<p>//--></script><br />
<wbr></wbr><font size="2">基质指帮目市快千导花科难深保住统管处认志图则研劳每场带亲至根更</font><wbr></wbr><font size="2">斗收信究且怎近非料何呢热术夫眼交布石达步拉众省风据奸增程火团字</font><wbr></wbr><font size="2">却油米委色式切望器办群观算调母土较请元爱持清广张连压觉识林际举</font><wbr></wbr><font size="2">即死专局类空单权毛师商孩装批府找往王校该未席约照易神克号京转须</font><wbr></wbr><font size="2">半习青早规验拿服节精树传备钱技讲告德参斯具织集病友谈示积亚复厂</font><wbr></wbr><font size="2">越支婚历兵胜选整铁势笑院板球河吗除准况影倒若格断甚速言采哪离县</font><wbr></wbr><font size="2">写台古远 <br />#~ 缩进可见<br />view.indentation.whitespace=1</p>
<p>#~长行指示<br />edge.column=200<br />edge.mode=1<br />edge.colour=#F9F9F9</p>
<p>#~设置错误行的前景色和背景色<br />error.marker.fore=#0000A0<br />error.marker.back=#DADAFF<br />#~ 定义菜单<br />user.context.menu=\ <br />||\<br />UTF-8|IDM_ENCODING_UCOOKIE|\<br />CodePage|IDM_ENCODING_DEFAULT|</p>
<p>#~ 定义api文件<br />if PLAT_WIN<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.java)=$(SciteDefaultHome)\api</font><wbr></wbr><font size="2">\java150.api<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.cs)=$(SciteDefaultHome)\api\cs</font><wbr></wbr><font size="2">.api <br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.cpp)=$(SciteDefaultHome)\api\cpp</font><wbr></wbr><font size="2">.api<br />&nbsp;&nbsp; &nbsp;api.$(<a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://file.patterns.py/">file.patterns.py</a>)=$(SciteDefaultHome)\api</font><wbr></wbr><font size="2">\python.api<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.php)=$(SciteDefaultHome)\api\php</font><wbr></wbr><font size="2">.api <br />if PLAT_GTK<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.java)=$(SciteDefaultHome)/api</font><wbr></wbr><font size="2">/java150.api<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.cs)=$(SciteDefaultHome)/api/cs</font><wbr></wbr><font size="2">.api<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.cpp)=$(SciteDefaultHome)/api/cpp</font><wbr></wbr><font size="2">.api<br />&nbsp;&nbsp; &nbsp;api.$( <a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://file.patterns.py/">file.patterns.py</a>)=$(SciteDefaultHome)/api</font><wbr></wbr><font size="2">/python.api<br />&nbsp;&nbsp; &nbsp;api.$(file.patterns.php)=$(SciteDefaultHome)/api/php</font><wbr></wbr><font size="2">.api<br />#~ 定义缩写文件<br />if PLAT_WIN<br />&nbsp;&nbsp; &nbsp;abbreviations.*.cpp=$(SciteDef</font><wbr></wbr><font size="2">aultHome)\abbrev\cppAbbrev</font><wbr></wbr><font size="2">.properties <br />&nbsp;&nbsp; &nbsp;abbreviations.*.cs=$(SciteDefa</font><wbr></wbr><font size="2">ultHome)\abbrev\csAbbrev</font><wbr></wbr><font size="2">.properties<br />&nbsp;&nbsp; &nbsp;abbreviations.*.java=$</font><wbr></wbr><font size="2">(SciteDefaultHome)\abbrev</font><wbr></wbr><font size="2">\javaAbbrev.properties<br />if PLAT_GTK<br />&nbsp;&nbsp; &nbsp;abbreviations.*.cpp=$(SciteDef</font><wbr></wbr><font size="2">aultHome)/abbrev/cppAbbrev</font><wbr></wbr><font size="2">.properties <br />&nbsp;&nbsp; &nbsp;abbreviations.*.cs=$(SciteDefa</font><wbr></wbr><font size="2">ultHome)/abbrev/csAbbrev</font><wbr></wbr><font size="2">.properties<br />&nbsp;&nbsp; &nbsp;abbreviations.*.java=$</font><wbr></wbr><font size="2">(SciteDefaultHome)/abbrev</font><wbr></wbr><font size="2">/javaAbbrev.properties  </font></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/13/1174992.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.5 去掉字符串两边的空格</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/13/1174912.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/13/1174912.aspx#comments</comments>
		<pubDate>Wed, 13 Jun 2007 01:17:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/13/1174912.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:</span><br /><br />需要过滤掉输入字符串的前导,后续空格或其它字符.这在处理用户输入的时候比较有用.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />和其它语言类似,Python也提供了lstrip</font><wbr></wbr><font size="2">,rstrip和strip方法,类似Delphi和C</font><wbr></wbr><font size="2">#的trim方法.<br />用法:<br /><br /><span style="color: rgb(204, 0, 0);">&#62;&#62;&#62; x = '&#160;&#160;&#160; test &#160; ' </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&#62;&#62;]]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></p>
<p>需要过滤掉输入字符串的前导,后续空格或其它字符.这在处理用户输入的时候比较有用.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>和其它语言类似,Python也提供了lstrip</font><wbr></wbr><font size="2">,rstrip和strip方法,类似Delphi和C</font><wbr></wbr><font size="2">#的trim方法.<br />用法:</p>
<p><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; x = &#8216;&nbsp;&nbsp;&nbsp; test &nbsp; &#8216; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; print &#8216;|&#8217;, x.lstrip( ), &#8216;|&#8217;, x.rstrip( ), &#8216;|&#8217;, x.strip( ), &#8216;|&#8217; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">| test &nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; test | test |</span></p>
<p>另外,这三个方法还可以接受一个参数,用于过滤指定的字符组成的串</font> <wbr></wbr><font size="2">,如:</p>
<p><span style="color: rgb(204, 0, 0);"> &gt;&gt;&gt; x = &#8216;xyxxyy testyx&nbsp; yyx&#8217; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; print &#8216;|&#8217;+x.strip(&#8216;xy&#8217;)+&#8217;|&#8217; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">| testyx&nbsp; |</span></p>
<p>需要注意的是:testyx前面有一个空格,因为空格前的所有的x</font><wbr></wbr><font size="2">,y都被过滤掉了,而test后面的yx没有被过滤掉,是因为执行到testyx后面那个空格的时候就完成了</font><wbr></wbr><font size="2">.如果我们只需要留下&#8217;test&#8217;,输入下面的语句即可: </p>
<p><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; print x.strip(&#8216;xy &#8216;)</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0); font-style: italic;">test</span></p>
<p><span style="font-weight: bold;"> 相关说明:</span></p>
<p><span style="font-weight: bold;">lstrip(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.lstrip([chars]) -&gt; string or unicode<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a copy of the string S with leading whitespace removed.<br />&nbsp;&nbsp;&nbsp; If chars is given and not None, remove characters in chars instead. <br />&nbsp;&nbsp;&nbsp; If chars is unicode, S will be converted to unicode before stripping</p>
<p><span style="font-weight: bold;">rstrip(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.rstrip([chars]) -&gt; string or unicode<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a copy of the string S with trailing whitespace removed. <br />&nbsp;&nbsp;&nbsp; If chars is given and not None, remove characters in chars instead.<br />&nbsp;&nbsp;&nbsp; If chars is unicode, S will be converted to unicode before stripping<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">strip(&#8230;) </span><br />&nbsp;&nbsp;&nbsp; S.strip([chars]) -&gt; string or unicode<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return a copy of the string S with leading and trailing<br />&nbsp;&nbsp;&nbsp; whitespace removed.<br />&nbsp;&nbsp;&nbsp; If chars is given and not None, remove characters in chars instead. <br />&nbsp;&nbsp;&nbsp; If chars is unicode, S will be converted to unicode before stripping<br /><span class="sg"><br /></span></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/13/1174912.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.4 排列字符</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/12/1174732.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/12/1174732.aspx#comments</comments>
		<pubDate>Tue, 12 Jun 2007 09:30:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/12/1174732.aspx</guid>
		<description><![CDATA[<font size="2"><span style="font-weight: bold;">需求:</span><br /><br />想要让输出的字符能够按照左对齐,右对齐,居中对齐的格式排列.这对于生成格式化的文本很重要.<br />让人回想起在C语言中的printf(&#34;%nd&#34;)的格式</font><wbr></wbr><font size="2">,其中n如果是-的,就是右对齐,不过好像没有居中对齐的概念啊.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />在Python中,是用str的rjust,ljust,center方法来实现上述的功能.看下面的例子:<br /><br /><span style="color: rgb(204, 0, 0);">&#62;&#62;&#62; print '&#124;','Hello'.ljust(15),'&#124;',<wbr></wbr>'Hello'.rjust(15),'&#124;','Hello'<wbr></wbr>.center(15),'&#124;']]></description>
			<content:encoded><![CDATA[<p><font size="2"><span style="font-weight: bold;">需求:</span></p>
<p>想要让输出的字符能够按照左对齐,右对齐,居中对齐的格式排列.这对于生成格式化的文本很重要.<br />让人回想起在C语言中的printf(&quot;%nd&quot;)的格式</font><wbr></wbr><font size="2">,其中n如果是-的,就是右对齐,不过好像没有居中对齐的概念啊.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>在Python中,是用str的rjust,ljust,center方法来实现上述的功能.看下面的例子:</p>
<p><span style="color: rgb(204, 0, 0);">&gt;&gt;&gt; print &#8216;|&#8217;,'Hello&#8217;.ljust(15),&#8217;|',<wbr></wbr>&#8216;Hello&#8217;.rjust(15),&#8217;|',&#8217;Hello&#8217;<wbr></wbr>.center(15),&#8217;|&#8217;  </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">| Hello&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hello |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hello&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</span></p>
<p>挺酷的,是吧,第一次用这个功能的时候,心里有说不出的方便的感觉</font> <wbr></wbr><font size="2">,呵呵.</p>
<p><span style="font-weight: bold;"> 相关说明:</span></p>
<p><span style="font-weight: bold;">ljust(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.ljust(width[, fillchar]) -&gt; string<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return S left justified in a string of length width. Padding is<br />&nbsp;&nbsp;&nbsp; done using the specified fill character (default is a space). </p>
<p><span style="font-weight: bold;">rjust(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.rjust(width[, fillchar]) -&gt; string<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return S right justified in a string of length width. Padding is<br />&nbsp;&nbsp;&nbsp; done using the specified fill character (default is a space) </p>
<p><span style="font-weight: bold;">center(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; S.center(width[, fillchar]) -&gt; string<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return S centered in a string of length width. Padding is<br />&nbsp;&nbsp;&nbsp; done using the specified fill character (default is a space) </font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/12/1174732.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Cook 1.3 测试一个对象是否是字符串</title>
		<link>http://blog.donews.com/tinylee/archive/2007/06/12/1174728.aspx</link>
		<comments>http://blog.donews.com/tinylee/archive/2007/06/12/1174728.aspx#comments</comments>
		<pubDate>Tue, 12 Jun 2007 09:15:00 +0000</pubDate>
		<dc:creator>Tinylee</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://blog.donews.com/tinylee/archive/2007/06/12/1174728.aspx</guid>
		<description><![CDATA[<span style="font-weight: bold;">需求:</span><br /><br />需要判断一个对象,或者方法的一个参数,看它们是否是字符串.<br /><br /><span style="font-weight: bold;">讨论:</span><br /><br />判断一个对象是否是字符串或者unicode串的最简单有效的办法<wbr></wbr>是使用isinstance和basestring<br /><br /><span style="color: rgb(204, 0, 0);"> def isString(str):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&#160;&#160;&#160; return isinstance(str, basestring)</span><br /><br />一般的说,判断一个对象是否是字符串,最容易想到的方法是:<br /><br /><span style="color: rg]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">需求:</span></p>
<p>需要判断一个对象,或者方法的一个参数,看它们是否是字符串.</p>
<p><span style="font-weight: bold;">讨论:</span></p>
<p>判断一个对象是否是字符串或者unicode串的最简单有效的办法<wbr></wbr>是使用isinstance和basestring</p>
<p><span style="color: rgb(204, 0, 0);"> def isString(str):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; return isinstance(str, basestring)</span></p>
<p>一般的说,判断一个对象是否是字符串,最容易想到的方法是:</p>
<p><span style="color: rgb(204, 0, 0);"> def isString(str):</span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; return type(str) is type(&#8221;)</span></p>
<p>这样有一些缺点:无法判断unicode字符串,或者用户从bas<wbr></wbr>estring继承下来的字符串类型.</p>
<p>当然,上面的算法在有些情况下也会失效:如Python类库中的U<wbr></wbr>serString <br />那样,可以使用下面的算法:</p>
<p><span style="color: rgb(204, 0, 0);">def isStringLike(str): </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; try: str + &#8221; </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; except: return False </span><br style="color: rgb(204, 0, 0);" /><span style="color: rgb(204, 0, 0);">&nbsp;&nbsp;&nbsp; else: return True</span><br style="color: rgb(204, 0, 0);" /><br />这样的算法会降低方法的效率,但能适应更多的情况.</p>
<p><span style="font-weight: bold;">相关说明:</span> </p>
<p><span style="font-weight: bold;">class basestring(object)</span><br />&nbsp;|&nbsp; Type basestring cannot be instantiated; it is the base for str and unicode.<br />&nbsp;|&nbsp; <br />&nbsp;|&nbsp; Data and other attributes defined here:<br />&nbsp;|&nbsp; <br /> &nbsp;|&nbsp; __new__ = &lt;built-in method __new__ of type object at 0&#215;8147420&gt;<br />&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T.__new__(S, &#8230;) -&gt; a new object with type S, a subtype of T</p>
<p><span style="font-weight: bold;">isinstance(&#8230;)</span><br />&nbsp;&nbsp;&nbsp; isinstance(object, class-or-type-or-tuple) -&gt; bool <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Return whether an object is an instance of a class or of a subclass thereof.<br />&nbsp;&nbsp;&nbsp; With a type as second argument, return whether that is the object&#8217;s type.<br />&nbsp;&nbsp;&nbsp; The form using a tuple, isinstance(x, (A, B, &#8230;)), is a shortcut for <br />&nbsp;&nbsp;&nbsp; isinstance(x, A) or isinstance(x, B) or &#8230; (etc.).</p>
<p><span style="color: rgb(0, 0, 0); font-weight: bold;">class type(object)</span><br />&nbsp;|&nbsp; type(object) -&gt; the object&#8217;s type<br />&nbsp;|&nbsp; type(name, bases, dict) -&gt; a new type</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/tinylee/archive/2007/06/12/1174728.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.578 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-11 12:12:14 -->
<!-- Compression = gzip -->
