Python论坛  - 讨论区

标题:[python-chinese] 清风Python练习贴

2005年02月25日 星期五 11:05

清风 paradisesdk-python at yahoo.com.cn
Fri Feb 25 11:05:37 HKT 2005

这是我在faridea首发的帖子,转到这里期待和更多的朋友进行交流,原贴:http://www.faridea.com/bbs/Announce/Announce.asp?BoardID=301&ID;=5814
让我们开始:)


感觉手绘区的这个方法特别好,我也特此开贴,督促自己学习:),有想和我一起学Python的就开始吧。

先到Python老家下载最新版的Python->http://www.python.org

2005-1-7:
为何要学习Python?到google可以搜索到一大堆理由。
我的理由是其字符串处理能力,和随心所欲的脚本语言写法,写Java总有一种很严肃很认真的感觉,而Python则很简便,有一种想法到哪,程序就到哪里的感觉

今天学习几个简单的部分:
1。生成随机数
java代码: 


import random
rnd = random.randint(1,500)#生成1-500之间的随机数



2。读文件
java代码: 


f = open("c:\\1.txt","r")
lines = f.readlines()#读取全部内容
for line in lines
  print line



3。 写文件
java代码: 


f = open("c:\\1.txt","r+")#可读可写模式
f.write("123")#写入字符串



4。基本语法
这是Python最令我欣赏的地方,无论你以前从事何种语言的开发,都会很快上手Python的语法

以上这些简单的代码,就可以组成一个小程序了,一个抽奖系统的后台核心代码了:)

2005-1-8:
接下来要用Python做两项工作:
1,网站的后台改造,用Python完成核心代码
会用到的技术:XML的读写,数据库的操作,XSLT的解析,代码的WebService化

2,一个网页爬虫机器人,抓取其他网站内容
正则表达式

其实对于一个项目的开发,语言并不是最重要的,关键是解决问题的方法和这种语言所提供的解决方案,为何选择Python来做这两个工作?开发快速,字符串处理能力强,移植性好

今天就先来测试一下Python的正则表达式能力

任务:读取tomcat的日志文件,并且把日期开头的内容显示出来,例如:xxxx-xx-xx

import re
regx = "\d\d\d\d-\d\d-\d+"
f = open("c:\stdout.log","r")
i = 0
for str in f.readlines():
    if re.search(regx,str):
        Response.write(str+"
") if i>10:break#由于是测试,只分析十行 i=i+1 f.close(); 代码很简单,关于正则表达式这里不做过多说明,由此也可以看出语言不是最重要的,重要的是解决方案。以下简单介绍一下Python的正则表达式,想了解更多到Google搜索Python+Regx 样本规则表达式 ABC([d-w]*\d\d?)+XYZ 对于要匹配这个表达式的字符串,它必须以 "ABC" 开头、以 "XYZ" 结尾 -- 但它的中间必须要有什么呢?中间子表达式是 ([d-w]*\d\d?),而且后面跟了“一或多”运算符。所以,字符串的中间必须包括一个(或者两个,或者一千个)与括号中的子表达式匹配的字符或字符串。字符串 "ABCXYZ" 不匹配,因为它的中间没有必要的字符。 不过这个内部子表达式是什么呢?它以 d-w 范围内的零或多个字母开头。一定要注意:零字母是有效匹配,虽然使用英语单词 "some"(一些)来描述它,可能会感到很别扭。接着,字符串必须恰好有一个数字;然后有零或一个附加数字。(第一个数字字符类没有循环运算符,所以它只出现一次。第二个数字字符类有 "?" 运算符。)总而言之,这将翻译成“一个或两个数字”。以下是一些与规则表达式匹配的字符串: 匹配样本表达式的字符串 ABC1234567890XYZ ABCd12e1f37g3XYZ ABC1XYZ 还有一些表达式与规则表达式不匹配(想一想,它们为什么不匹配): 不匹配样本表达式的字符串 ABC123456789dXYZ ABCdefghijklmnopqrstuvwXYZ ABcd12e1f37g3XYZ ABC12345%67890XYZ ABCD12E1F37G3XYZ 需要一些练习才能习惯创建和理解规则表达式。但是,一旦掌握了规则表达式,您就具有了强大的表达能力。也就是说,转而使用规则表达式解决问题通常会很容易,而这类问题实际上可以使用更简单(而且更快速)的工具,如 string,来解决。 一个用来测试Python正则表达式的工具: http://kodos.sourceforge.net/ 图形界面,简单易用,适合学习Python的正则表达式 一个正则表达式标记的中文说明: http://hedong.3322.org/archives/000244.html 2005-1-8第二贴: 任务:尝试Python的XML-RPC远程调用 何为XML-RPC? XML-RPC 是 XML Web 服务的鼻祖。它是一个用于远程过程调用(remote procedure call,RPC)的简单规范,这种调用使用 HTTP 作为传输协议,并使用 XML 词汇表作为消息有效负载。由于 XML-RPC 非常简单(整个规范打印出来还不到十页纸),它已经变得非常流行,现在大多数语言都有了标准的或已经可用的 XML-RPC 实现。这些语言中包括 Python,它在版本 2.2 中就开始捆绑 xmlrpclib(Fredrik Lundh 开发的 XML-RPC 实现)了。 首先,我们打算将CMS(Context Manager System)系统进行Python的改造,第一件事,先向外公开版本的变化,可供远程调用。 import SimpleXMLRPCServer #定义自己的CMS类 class MyCMS: def getVersion(self):#向外公开版本的方法 return "Powerd By Python 0.1a" cms = MyCMS() server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) server.register_instance(cms) print "Listening on port 8888" server.serve_forever()#服务器执行,并监听8888端口 执行后截图: 此主题相关图片 http://www.faridea.com/bbs/images/upload/2005/01/08/121426.gif 客户端调用代码,获得最新的版本信息 import xmlrpclib server = xmlrpclib.ServerProxy("http://localhost:8888";) version = server.getVersion() print "version:"+version 执行后截图: 此主题相关图片 http://www.faridea.com/bbs/images/upload/2005/01/08/121456.gif 总结: 比同等的JAVA实现代码量明显减少,使精力能够更多的集中到系统本身中来 JAVA的一个XmlRpc实现:http://ws.apache.org/xmlrpc/ JAVA调用代码如下: XmlRpcClient xmlrpc = null; try { xmlrpc = new XmlRpcClient("http://localhost:8888/";); } catch (MalformedURLException e) { e.printStackTrace(); } Vector params = new Vector(); try { String result = (String) xmlrpc.execute("getVersion", params); System.out.println(result); } catch (XmlRpcException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } 执行效果如图: 此主题相关图片 http://www.faridea.com/bbs/images/upload/2005/01/08/143009.gif 想了解更多,请到这里: http://www.python.org/doc/current/lib/module-xmlrpclib.html http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.html ===== “阅读清风的邮件,是我一生最快乐的时光”---牛顿 _________________________________________________________ Do You Yahoo!? 150万曲MP3疯狂搜,带您闯入音乐殿堂 http://music.yisou.com/ 美女明星应有尽有,搜遍美图、艳图和酷图 http://image.yisou.com 1G就是1000兆,雅虎电邮自助扩容! http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/ ===== “阅读清风的邮件,是我一生最快乐的时光”---牛顿 _________________________________________________________ Do You Yahoo!? 150万曲MP3疯狂搜,带您闯入音乐殿堂 http://music.yisou.com/ 美女明星应有尽有,搜遍美图、艳图和酷图 http://image.yisou.com 1G就是1000兆,雅虎电邮自助扩容! http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年02月25日 星期五 13:13

limodou limodou at gmail.com
Fri Feb 25 13:13:25 HKT 2005

这篇文章我在 java视线[http://forum.javaeye.com/]
论坛已经看到。不过放在邮件列表其实不用整篇贴出来,给个链接即可。如果你希望与更多的python爱好者交流(因为你所在的论坛是以java为主的)建议放在啄木鸟社区的wiki上。更希望经常交流。同时我看到java视线有许多很好的讨论,特别是看到dlee,gigix也在这方面。dlee曾经是中国linux论坛的xml版版主。只不过与python关系不大。


-- 
I like python! 
My Blog: http://www.donews.net/limodou
New Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年02月25日 星期五 13:55

ding jianting dfar2008 at gmail.com
Fri Feb 25 13:55:26 HKT 2005

写的不错,希望多发类似的帖子,帮助帮助初学者。


On Fri, 25 Feb 2005 11:05:37 +0800 (CST), 清风
<paradisesdk-python at yahoo.com.cn> wrote:
> 这是我在faridea首发的帖子,转到这里期待和更多的朋友进行交流,原贴:http://www.faridea.com/bbs/Announce/Announce.asp?BoardID=301&ID;=5814
> 让我们开始:)
> 
> 感觉手绘区的这个方法特别好,我也特此开贴,督促自己学习:),有想和我一起学Python的就开始吧。
> 
> 先到Python老家下载最新版的Python->http://www.python.org
> 
> 2005-1-7:
> 为何要学习Python?到google可以搜索到一大堆理由。
> 我的理由是其字符串处理能力,和随心所欲的脚本语言写法,写Java总有一种很严肃很认真的感觉,而Python则很简便,有一种想法到哪,程序就到哪里的感觉
> 
> 今天学习几个简单的部分:
> 1。生成随机数
> java代码:
> 
> import random
> rnd = random.randint(1,500)#生成1-500之间的随机数
> 
> 2。读文件
> java代码:
> 
> f = open("c:\\1.txt","r")
> lines = f.readlines()#读取全部内容
> for line in lines
>   print line
> 
> 3。 写文件
> java代码:
> 
> f = open("c:\\1.txt","r+")#可读可写模式
> f.write("123")#写入字符串
> 
> 4。基本语法
> 这是Python最令我欣赏的地方,无论你以前从事何种语言的开发,都会很快上手Python的语法
> 
> 以上这些简单的代码,就可以组成一个小程序了,一个抽奖系统的后台核心代码了:)
> 
> 2005-1-8:
> 接下来要用Python做两项工作:
> 1,网站的后台改造,用Python完成核心代码
> 会用到的技术:XML的读写,数据库的操作,XSLT的解析,代码的WebService化
> 
> 2,一个网页爬虫机器人,抓取其他网站内容
> 正则表达式
> 
> 其实对于一个项目的开发,语言并不是最重要的,关键是解决问题的方法和这种语言所提供的解决方案,为何选择Python来做这两个工作?开发快速,字符串处理能力强,移植性好
> 
> 今天就先来测试一下Python的正则表达式能力
> 
> 任务:读取tomcat的日志文件,并且把日期开头的内容显示出来,例如:xxxx-xx-xx
> 
> import re
> regx = "\d\d\d\d-\d\d-\d+"
> f = open("c:\stdout.log","r")
> i = 0
> for str in f.readlines():
>     if re.search(regx,str):
>         Response.write(str+"
")
> if i>10:break#由于是测试,只分析十行 > i=i+1 > f.close(); > > 代码很简单,关于正则表达式这里不做过多说明,由此也可以看出语言不是最重要的,重要的是解决方案。以下简单介绍一下Python的正则表达式,想了解更多到Google搜索Python+Regx > > 样本规则表达式 > > ABC([d-w]*\d\d?)+XYZ > > 对于要匹配这个表达式的字符串,它必须以 "ABC" 开头、以 > "XYZ" 结尾 -- 但它的中间必须要有什么呢?中间子表达式是 > ([d-w]*\d\d?),而且后面跟了"一或多"运算符。所以,字符串的中间必须包括一个(或者两个,或者一千个)与括号中的子表达式匹配的字符或字符串。字符串 > "ABCXYZ" 不匹配,因为它的中间没有必要的字符。 > > 不过这个内部子表达式是什么呢?它以 d-w > 范围内的零或多个字母开头。一定要注意:零字母是有效匹配,虽然使用英语单词 > "some"(一些)来描述它,可能会感到很别扭。接着,字符串必须恰好有一个数字;然后有零或一个附加数字。(第一个数字字符类没有循环运算符,所以它只出现一次。第二个数字字符类有 > "?" > 运算符。)总而言之,这将翻译成"一个或两个数字"。以下是一些与规则表达式匹配的字符串: > > 匹配样本表达式的字符串 > > ABC1234567890XYZ > ABCd12e1f37g3XYZ > ABC1XYZ > > 还有一些表达式与规则表达式不匹配(想一想,它们为什么不匹配): > > 不匹配样本表达式的字符串 > > ABC123456789dXYZ > ABCdefghijklmnopqrstuvwXYZ > ABcd12e1f37g3XYZ > ABC12345%67890XYZ > ABCD12E1F37G3XYZ > > 需要一些练习才能习惯创建和理解规则表达式。但是,一旦掌握了规则表达式,您就具有了强大的表达能力。也就是说,转而使用规则表达式解决问题通常会很容易,而这类问题实际上可以使用更简单(而且更快速)的工具,如 > string,来解决。 > > 一个用来测试Python正则表达式的工具: > http://kodos.sourceforge.net/ > 图形界面,简单易用,适合学习Python的正则表达式 > > 一个正则表达式标记的中文说明: > http://hedong.3322.org/archives/000244.html > > 2005-1-8第二贴: > 任务:尝试Python的XML-RPC远程调用 > > 何为XML-RPC? > > XML-RPC 是 XML Web > 服务的鼻祖。它是一个用于远程过程调用(remote procedure > call,RPC)的简单规范,这种调用使用 HTTP > 作为传输协议,并使用 XML 词汇表作为消息有效负载。由于 > XML-RPC > 非常简单(整个规范打印出来还不到十页纸),它已经变得非常流行,现在大多数语言都有了标准的或已经可用的 > XML-RPC 实现。这些语言中包括 Python,它在版本 2.2 > 中就开始捆绑 xmlrpclib(Fredrik Lundh 开发的 XML-RPC > 实现)了。 > > 首先,我们打算将CMS(Context Manager > System)系统进行Python的改造,第一件事,先向外公开版本的变化,可供远程调用。 > > import SimpleXMLRPCServer > > #定义自己的CMS类 > class MyCMS: > def getVersion(self):#向外公开版本的方法 > return "Powerd By Python 0.1a" > > cms = MyCMS() > server = > SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", > 8888)) > server.register_instance(cms) > > print "Listening on port 8888" > server.serve_forever()#服务器执行,并监听8888端口 > > 执行后截图: > 此主题相关图片 > http://www.faridea.com/bbs/images/upload/2005/01/08/121426.gif > > 客户端调用代码,获得最新的版本信息 > > import xmlrpclib > > server = > xmlrpclib.ServerProxy("http://localhost:8888";) > > version = server.getVersion() > > print "version:"+version > > 执行后截图: > 此主题相关图片 > http://www.faridea.com/bbs/images/upload/2005/01/08/121456.gif > > 总结: > 比同等的JAVA实现代码量明显减少,使精力能够更多的集中到系统本身中来 > JAVA的一个XmlRpc实现:http://ws.apache.org/xmlrpc/ > JAVA调用代码如下: > > XmlRpcClient xmlrpc = null; > try > { > xmlrpc = new > XmlRpcClient("http://localhost:8888/";); > } > catch (MalformedURLException e) > { > e.printStackTrace(); > } > Vector params = new Vector(); > try > { > String result = (String) > xmlrpc.execute("getVersion", params); > System.out.println(result); > } > catch (XmlRpcException e1) > { > e1.printStackTrace(); > } > catch (IOException e1) > { > e1.printStackTrace(); > } > > 执行效果如图: > 此主题相关图片 > http://www.faridea.com/bbs/images/upload/2005/01/08/143009.gif > > 想了解更多,请到这里: > http://www.python.org/doc/current/lib/module-xmlrpclib.html > http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.html > > ===== > "阅读清风的邮件,是我一生最快乐的时光"---牛顿 > > _________________________________________________________ > Do You Yahoo!? > 150万曲MP3疯狂搜,带您闯入音乐殿堂 > http://music.yisou.com/ > 美女明星应有尽有,搜遍美图、艳图和酷图 > http://image.yisou.com > 1G就是1000兆,雅虎电邮自助扩容! > http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/ > > ===== > "阅读清风的邮件,是我一生最快乐的时光"---牛顿 > > _________________________________________________________ > Do You Yahoo!? > 150万曲MP3疯狂搜,带您闯入音乐殿堂 > http://music.yisou.com/ > 美女明星应有尽有,搜遍美图、艳图和酷图 > http://image.yisou.com > 1G就是1000兆,雅虎电邮自助扩容! > http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/ > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > -- ________________________________________ Agile Business System (Java , Python) 不要做没有把握的事情! 天上不会掉林妹妹的! -----------------------------------------------------------------------

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年02月25日 星期五 15:12

清风 paradisesdk-python at yahoo.com.cn
Fri Feb 25 15:12:11 HKT 2005

明白了:)
另:这片文章首发于http://www.faridea.com/bbs/Announce/Announce.asp?BoardID=301&ID;=5814
一般我是这两个论坛同时更新。

那以后我还是在论坛继续更新,这里只发经过总结提炼的文章。

 --- limodou <limodou at gmail.com> 的正文:
> 这篇文章我在 java视线[http://forum.javaeye.com/]
>
论坛已经看到。不过放在邮件列表其实不用整篇贴出来,给个链接即可。如果你希望与更多的python爱好者交流(因为你所在的论坛是以java为主的)建议放在啄木鸟社区的wiki上。更希望经常交流。同时我看到java视线有许多很好的讨论,特别是看到dlee,gigix也在这方面。dlee曾经是中国linux论坛的xml版版主。只不过与python关系不大。
> 
> 
> -- 
> I like python! 
> My Blog: http://www.donews.net/limodou
> New Maillist:
> http://groups-beta.google.com/group/python-cn
>  



_________________________________________________________
Do You Yahoo!?
150万曲MP3疯狂搜,带您闯入音乐殿堂
http://music.yisou.com/
美女明星应有尽有,搜遍美图、艳图和酷图
http://image.yisou.com
1G就是1000兆,雅虎电邮自助扩容!
http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号