<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.0">
    <channel>
        <description>-77家的会客厅</description>
        <lastBuildDate>2010-09-08 09:32:59.895648</lastBuildDate>
        <link>http://3rgb.com</link>
        <title>Python相关-77家的会客厅</title>
        <pubDate>2010-09-08 09:32:59.895648</pubDate>
        <webMaster>support@3rgb.com</webMaster>
        <image>
            <link>http://3rgb.com</link>
            <url>/static/images/n3clogo.png</url>
        </image>
        
        <item>
            <title>PythonでAccessデータベース(*.mdb)にテーブルを追加する</title>
            <pubDate>2010-04-16 16:48:20.419163</pubDate>
            <pubDateParsed>2010-04-16 16:48:20.419163</pubDateParsed>
            <link>http://3rgb.com/entry/create_table_in_access_mdb_with_python </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	テーブルの追加は、ADOXを使ってできますが、ADOからSQLを発行した方が楽なので、そちらで。テーブルの存在確認をしたかったので、これは ADOXで行っています。&lt;/p&gt;
&lt;pre&gt;
#!c:/Python25/python.exe -u
# encoding: cp932

import win32com.client

MDB_NAME = r&amp;quot;test.mdb&amp;quot;
PASSWORD = &amp;quot;pass&amp;quot;
TABLE_NAME = u&amp;quot;テーブル&amp;quot;&lt;/pre&gt;
&lt;br /&gt;

            </description>
        </item>
        
        <item>
            <title>PythonでAccessデータベース(*.mdb)を作成する</title>
            <pubDate>2010-04-16 16:45:33.851350</pubDate>
            <pubDateParsed>2010-04-16 16:45:33.851350</pubDateParsed>
            <link>http://3rgb.com/entry/create_access_mdb_file_with_python </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	ADOXを使用して、&lt;span class=&#34;highlight&#34;&gt;Access&lt;/span&gt;のデータベース(*.&lt;span class=&#34;highlight&#34;&gt;mdb&lt;/span&gt;)を作成します。私が知るたいがいのWindows(Windows XPと言うものです)では標準で使えるので、インストールなしにデータベースを使用したい場合に便利です(&lt;span class=&#34;highlight&#34;&gt;Access&lt;/span&gt;をインストールしていなくても使えるわけで)。前にVBScriptで作ったものの&lt;span class=&#34;highlight&#34;&gt;Python&lt;/span&gt;版。&lt;/p&gt;
&lt;pre&gt;
#!c:/&lt;span class=&#34;highlight&#34;&gt;Python&lt;/span&gt;25/&lt;span class=&#34;highlight&#34;&gt;python&lt;/span&gt;.exe -u
# encoding: cp932

import win32com.client

&lt;span class=&#34;highlight&#34;&gt;MDB&lt;/span&gt;_NAME = r&amp;quot;test.&lt;span class=&#34;highlight&#34;&gt;mdb&lt;/span&gt;&amp;quot;
PASSWORD = &amp;quot;pass&amp;quot;

cat = win32com.client.Dispatch(&amp;quot;ADOX.Catalog&amp;quot;)
ConnectionString = &amp;quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;\
    Jet OLEDB:Database Password=%s;&amp;quot; % (&lt;span class=&#34;highlight&#34;&gt;MDB&lt;/span&gt;_NAME,PASSWORD)
cat.Create(ConnectionString)&lt;/pre&gt;
&lt;br /&gt;

            </description>
        </item>
        
        <item>
            <title>Python将文件写入网络共享文件夹内</title>
            <pubDate>2010-04-11 23:34:21.945498</pubDate>
            <pubDateParsed>2010-04-11 23:34:21.945498</pubDateParsed>
            <link>http://3rgb.com/entry/write_files_in_network_share_folder_with_python </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	win下，使用os.system运行net use 把远程目录映射驱动器后，即可操作;&lt;br /&gt;
	*unix下，安装samba服务并配置，mount后即可；&lt;/p&gt;
&lt;p&gt;
	os.system(&amp;ldquo;net use z: \\192.168.0.6\zz&amp;rdquo;）&lt;/p&gt;
&lt;p&gt;
	需要验证的共享文件夹映射操作方法&lt;br /&gt;
	os.system(&amp;#39;net use z: \\192.168.0.6\zz /user:admin /password:123&amp;#39;)&lt;/p&gt;
            </description>
        </item>
        
        <item>
            <title>关于N3CP</title>
            <pubDate>2010-04-06 22:16:37.027067</pubDate>
            <pubDateParsed>2010-04-06 22:16:37.027067</pubDateParsed>
            <link>http://3rgb.com/entry/about_n3c_in_python </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	新版的命名是基于上一版的N3C的，之所以加个P，是因为现在的版本用的是PYTHON的WEB框架web.py。&lt;/p&gt;
&lt;p&gt;
	小巧，但 是却很强大。&lt;/p&gt;
&lt;p&gt;
	不想说太多，毕竟是自己做来用的，说几个关键词吧。&lt;/p&gt;
&lt;p&gt;
	web.py SQLAlchemy Jinja2 SQLite&lt;/p&gt;
&lt;p&gt;
	空间用的是张教主的stdyun.com那儿买的，APACHE跑FASTCGI。&lt;/p&gt;

            </description>
        </item>
        
        <item>
            <title>Python中字典操作的常用方法</title>
            <pubDate>2009-05-05 11:24:29</pubDate>
            <pubDateParsed>2009-05-05 11:24:29</pubDateParsed>
            <link>http://3rgb.com/entry/Python_dictionary </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	&amp;nbsp;&amp;nbsp;当然说字典，那也就有一些常用方法&lt;br /&gt;
	&lt;br /&gt;
	------------------------清除------------------------&lt;br /&gt;
	clear()方法，将字典所有内容清除:&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d = {&amp;#39;age&amp;#39; : 12, &amp;#39;name&amp;#39; : &amp;#39;bob&amp;#39;}&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d&lt;br /&gt;
	{&amp;#39;age&amp;#39;: 12, &amp;#39;name&amp;#39;: &amp;#39;bob&amp;#39;}&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d.clear()&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d&lt;br /&gt;
	{}&lt;br /&gt;
	&lt;br /&gt;
	有人可能会问为什么不直接d={}?&lt;br /&gt;
	看下面的例子：&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d = {&amp;#39;age&amp;#39; : 12, &amp;#39;name&amp;#39; : &amp;#39;bob&amp;#39;}&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; x = d&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; d = {}&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; x&lt;br /&gt;
	{&amp;#39;age&amp;#39;: 12, &amp;#39;name&amp;#39;: &amp;#39;bob&amp;#39;}.....&lt;/p&gt;

            </description>
        </item>
        
        <item>
            <title>Python 处理 Excel</title>
            <pubDate>2009-04-30 11:11:33</pubDate>
            <pubDateParsed>2009-04-30 11:11:33</pubDateParsed>
            <link>http://3rgb.com/entry/Python_Excel </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	&amp;nbsp;使用Python对Excel进行操作，然后把结果生成一个新的Excel表格，使用到了&lt;a href=&#34;http://www.lexicon.net/sjmachin/xlrd.htm&#34;&gt;xlrd&lt;/a&gt;和&lt;a href=&#34;http://sourceforge.net/projects/pyexcelerator&#34;&gt;pyExcelerator&lt;/a&gt;两个库。&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
	&lt;p&gt;
		&lt;strong&gt;简单的介绍一下这两个库，先说xlrd，这个库读Excel比较方便，各种方法使用起来也挺方便：&lt;/strong&gt;&lt;/p&gt;
	&lt;p&gt;
		bk = xlrd.open_workbook(&amp;#39;your.xls&amp;#39;)&lt;br /&gt;
		sh = bk.sheets()[-1]&lt;br /&gt;
		上面两句就可以打开Excel表格中的一个sheet，sheets得到的是一个list，存放所有的sheet。&lt;br /&gt;
		sh.nrows是该sheet中的行数，知道这个后就可以使用for循环来读所有的单元格了：&lt;br /&gt;
		sh.row(i)[3]这个就代表第i行的第4列。&lt;/p&gt;
	&lt;p&gt;
		&lt;strong&gt;再看看pyExcelerator，这个用起来有点别扭：&lt;/strong&gt;&lt;/p&gt;
	&lt;p&gt;
		sheets = parse_xls(&amp;#39;result.xls&amp;#39;)&lt;br /&gt;
		先打开一个表格，sheets是一个list，包含了所有表格的内容，每一项就是一个sheet，而每个sheet是二元tuple，第一个是该sheet的名字，第二个是一个dict，dict的key是一个二元组，表示单元格的坐标，如(0,0)，第一行第一列。&lt;br /&gt;
		从上面的分析中可以得出要访问Excel中第一个sheet的第一行第一列元素需要：&lt;br /&gt;
		sheets[0][1][(0,0)]&lt;br /&gt;
		pyExcelerator也不能得到行列数。&lt;/p&gt;
	&lt;p&gt;
		写文件也比较简单：&lt;br /&gt;
		wb = Workbook()&lt;br /&gt;
		ws = wb.add_sheet(&amp;#39;result&amp;#39;)&lt;br /&gt;
		ws.write(0,0,&amp;ldquo;hello&amp;rdquo;)&lt;br /&gt;
		wb.save(&amp;#39;result.xls&amp;#39;)&lt;br /&gt;
		&amp;nbsp;&lt;/p&gt;
	&lt;p&gt;
		写文件时需要注意直接写Unicode内容进去，而不要写编码过的内容。&lt;/p&gt;
	&lt;p&gt;
		转载于:&lt;a href=&#34;http://cocobear.info/blog/2009/01/16/use-python-deal-with-excel/&#34;&gt;可可熊的窝&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

            </description>
        </item>
        
        <item>
            <title>Python实现IP地址与数值之间互转</title>
            <pubDate>2009-04-28 17:17:27</pubDate>
            <pubDateParsed>2009-04-28 17:17:27</pubDateParsed>
            <link>http://3rgb.com/entry/Python_IP2number </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;自己写方法:&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	&amp;nbsp;def ip2num(ip):&lt;br /&gt;
	i = 0&lt;br /&gt;
	result = 0&lt;br /&gt;
	for num in ip.split(&amp;quot;.&amp;quot;):&lt;br /&gt;
	result += int(num)&amp;lt;&amp;lt;((3-i)*8)&lt;br /&gt;
	i+=1&lt;br /&gt;
	return result&amp;nbsp;&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	def num2ip(num):&lt;br /&gt;
	li = []&lt;br /&gt;
	num1 = num&amp;gt;&amp;gt;24&lt;br /&gt;
	li.append(str(num1))&lt;br /&gt;
	num2 = ((num&amp;gt;&amp;gt;16)-(num1&amp;lt;&amp;lt;8))&lt;br /&gt;
	li.append(str(num2))&lt;br /&gt;
	num3 = ((num&amp;gt;&amp;gt;8)-(num1&amp;lt;&amp;lt;16)-(num2&amp;lt;&amp;lt;8))&lt;br /&gt;
	li.append(str(num3))&lt;br /&gt;
	num4 = (num-(num1&amp;lt;&amp;lt;24)-(num2&amp;lt;&amp;lt;16)-(num3&amp;lt;&amp;lt;8))&lt;br /&gt;
	li.append(str(num4))&lt;br /&gt;
	return &amp;quot;.&amp;quot;.join(li)&lt;/p&gt;
&lt;p&gt;
	其实PY已经有相应的模块了&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	&amp;gt;&amp;gt;&amp;gt; import socket&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; import struct&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; socket.ntohl(struct.unpack(&amp;#39;i&amp;#39;,socket.inet_aton(&amp;#39;192.168.101.2&amp;#39;))[0])&lt;br /&gt;
	3232261378L&lt;br /&gt;
	&amp;gt;&amp;gt;&amp;gt; socket.inet_ntoa(struct.pack(&amp;#39;i&amp;#39;,socket.htonl(3232261378L)))&lt;br /&gt;
	&amp;#39;192.168.101.2&amp;#39;&lt;/p&gt;

            </description>
        </item>
        
        <item>
            <title>Python中的正则表达式入门(1)</title>
            <pubDate>2009-04-11 21:33:52</pubDate>
            <pubDateParsed>2009-04-11 21:33:52</pubDateParsed>
            <link>http://3rgb.com/entry/Python中的正则表达式入门(1) </link>
            <comments>0</comments>
            <description>
            &lt;ul&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;^&lt;/tt&gt; 匹配字符串的开始。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;$&lt;/tt&gt; 匹配字符串的结尾。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;\b&lt;/tt&gt; 匹配一个单词的边界。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;\d&lt;/tt&gt; 匹配任意数字。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;\D&lt;/tt&gt; 匹配任意非数字字符。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;x?&lt;/tt&gt; 匹配一个可选的&lt;tt class=&#34;literal&#34;&gt;x&lt;/tt&gt;字符（换句话说，它匹配1次或者0次&lt;tt class=&#34;literal&#34;&gt;x&lt;/tt&gt; 字符）。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;x*&lt;/tt&gt; 匹配0次或者多次&lt;tt class=&#34;literal&#34;&gt;x&lt;/tt&gt;字符。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;x+&lt;/tt&gt;匹配1次或者多次&lt;tt class=&#34;literal&#34;&gt;x&lt;/tt&gt;字符。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;x{n,m}&lt;/tt&gt; 匹配&lt;tt class=&#34;literal&#34;&gt;x&lt;/tt&gt;字符，至少&lt;tt class=&#34;literal&#34;&gt;n&lt;/tt&gt;次，至多&lt;tt class=&#34;literal&#34;&gt;m&lt;/tt&gt;次。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;(a|b|c)&lt;/tt&gt;要么匹配&lt;tt class=&#34;literal&#34;&gt;a&lt;/tt&gt;，要么匹配&lt;tt class=&#34;literal&#34;&gt;b&lt;/tt&gt;，要么匹配&lt;tt class=&#34;literal&#34;&gt;c&lt;/tt&gt;。&lt;/li&gt;
	&lt;li&gt;
		&lt;tt class=&#34;literal&#34;&gt;(x)&lt;/tt&gt; 一般情况下表示一个&lt;span class=&#34;emphasis&#34;&gt;&lt;em&gt;记忆组(remembered group)&lt;/em&gt;&lt;/span&gt;. 你可以利用&lt;tt class=&#34;function&#34;&gt;re.search&lt;/tt&gt;函数返回对象的&lt;tt class=&#34;function&#34;&gt;groups()&lt;/tt&gt;函数获取它的值。&lt;/li&gt;
&lt;/ul&gt;

            </description>
        </item>
        
        <item>
            <title>PYTHON实现阶乘算法</title>
            <pubDate>2009-04-10 00:38:48</pubDate>
            <pubDateParsed>2009-04-10 00:38:48</pubDateParsed>
            <link>http://3rgb.com/entry/PYTHON实现阶乘算法 </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;
	今天看到FoxPro的一道题，要写出P = N!的程序及结果，这不就是个求阶乘吗？&lt;/p&gt;
&lt;p&gt;
	一般程序弄个双循环就可以了，不过PYTHON就比较方便，循环一次就可以了。&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	&amp;nbsp;&amp;nbsp;def f(n):&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c = 1&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i in range(n+1):&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp; *= i&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return c&lt;/p&gt;
&lt;p&gt;
	或者是用递归的方法也比较方便。&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	def f(n):&lt;br /&gt;
	&amp;nbsp;if n &amp;gt; 1:&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;return n*f(n-1)&lt;br /&gt;
	&amp;nbsp;else:&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;return 1&lt;br /&gt;
	&lt;br /&gt;
	或&lt;br /&gt;
	&lt;br /&gt;
	def f(n):&lt;br /&gt;
	&amp;nbsp;p = 1&lt;br /&gt;
	&amp;nbsp;if n &amp;gt; 1:&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;p = n*f(n-1)&lt;br /&gt;
	&amp;nbsp;return p&lt;/p&gt;
&lt;p&gt;
	再后来一想，PYTHON有lambda方法，会不会有更好的方法，于是reduce方法，一句话搞定阶乘。&lt;/p&gt;
&lt;p&gt;
	用PYTHON的reduce方法&lt;/p&gt;
&lt;p class=&#34;Code&#34;&gt;
	def foo(n):&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return reduce(lambda x,y: x*y, range(1,n+1)&lt;/p&gt;
            </description>
        </item>
        
        <item>
            <title>Python下为字典排序</title>
            <pubDate>2006-04-03 17:53:30</pubDate>
            <pubDateParsed>2006-04-03 17:53:30</pubDateParsed>
            <link>http://3rgb.com/entry/Python下为字典排序 </link>
            <comments>0</comments>
            <description>
            &lt;p&gt;&amp;lt;p&amp;gt;# (IMHO) the simplest approach:&amp;lt;br /&amp;gt; def sortedDictValues1(adict):&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; items = adict.items()&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; items.sort()&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return [value for key, value in items]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; # an alternative implementation, which&amp;lt;br /&amp;gt; # happens to run a bit faster for large&amp;lt;br /&amp;gt; # dictionaries on my machine:&amp;lt;br /&amp;gt; def sortedDictValues2(adict):&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...&amp;lt;/p&amp;gt;&lt;/p&gt;
            </description>
        </item>
        
    </channel>
</rss>