python的精髓——字符串万岁

python的精髓——字符串万岁



[Copy to clipboard] [ - ]
CODE:
'.'.join(os.path.join(tree,leaf).replace((asenv.ASHOME + os.sep),'',1).split(os.sep))

挺长的一串(其实还有更长的),呵呵,这就是python的诱人之处,一行解决所有问题
解释:
目录asenv.ASHOME是一个容器,里面包含tree路径里面的子目录/文件leaf
这一行的意思就是,把ASHOME/tree/leaf模式的路径,剥除容器路径,生成一个以点'.'分割每一级目录的字符串
比如,ASHOME/12/34/56/78 会转换成 12.34.56.78

学会使用join和split拆分转换字符串,这才是python的起步

PS:实际上python中的字符串不能当作传统意义上的字符串来看待,它有许多神奇的功用,实际上它是一种高层数据结构的体现

好像perl,php中都有join,split吧?
楼主的程序是有问题的哦,strip方法的签名是 strip( [chars]) ,并不是 strip( string)。
举个例子就很清楚了,  
'abcde'.strip('ab') 的返回值是 'cde', 'abcde'.strip('ba') 的返回值也是 'cde'
楼主asenv.ASHOME因为恰巧不包含数字,所以没出问题,如果是ASHOME12345678/12/34/56/78你再看看结果是多少.

另:这个问题用实际的例子说明了看文档是非常重要滴。在另一个帖里面有人对我先思考再写代码的方式颇有微词,看来他也是边写代码边思考(或者说边在命令行验证),只不过抛出了一个高空理论说“重要的是用最短的时间拿出最好的东西”,让人无法反驳,在这里我想说,有时候光靠在命令行验证是不够的,还得看文档思考才行。你凭什么说你用最短的时间拿出的东西就是最好的东西?

(楼主别介意啊,说的可不是你哦,呵呵。有感而发。)



QUOTE:
原帖由 jkit 于 2006-6-19 11:37 发表
楼上的程序是有问题的哦,strip方法的签名是 strip( [chars]) ,并不是 strip( string)。
举个例子就很清楚了,  
'abcde'.strip('ab') 的返回值是 'cde', 'abcde'.strip('ba') 的返回值也是 'cde'
楼上asenv ...

恩,这里是有问题,实际上我偷懒了,可以用replace代替
瞧,改用replace又变长了,估计很多新手看不明白了

另外,对于其他语言来说,的确也有这些方法,但是却很难写出来不断的“.”相连的,字符串.方法.方法.方法 无限循环这种方式,当然你可以用函数(函数(函数(函数)))这样的形式,不过那种更易懂呢?
更何况有些时候你根本无法把python中一行的复杂循环调用表达式些程函数形式,比如''.join()这种用法,在几乎其他的OO语言中都是不可能的,比如java。你要先生成一个基本Char类型,然后给他null值,才能在这里使用



QUOTE:
原帖由 jkit 于 2006-6-19 11:37 发表
有时候光靠在命令行验证是不够的,还得看文档思考才行。你凭什么说你用最短的时间拿出的东西就是最好的东西?

如果连基本的函数的用法、接口(PS:我觉得“签名”很难听)都记不住,
都需要“在命令行验证”,
那么你当然是不能用最短的时间拿出最好的东西了。

QUOTE:
原帖由 jkit 于 2006-6-19 11:37 发表
看来他也是……边在命令行验证

妄加猜测,无知!

QUOTE:
原帖由 jkit 于 2006-6-19 11:37 发表
说的可不是你哦

背后论人,卑鄙!
不知道楼上拿出了多少“最好的东西”?show一下?


QUOTE:
原帖由 flw 于 2006-6-19 12:17 发表

QUOTE:
原帖由 jkit 于 2006-6-19 11:37 发表
有时候光靠在命令行验证是不够的,还得看文档思考才行。你凭什么说你用最短的时间拿出的东西就是最好的东西?

如果连基本的函数的用法、接口(PS:我觉得“签名”很难听)都记不住,
都需要“在命令行验证”,
那么你当然是不能用最短的时间拿出最好的东西了。

我说的是有时候,不是说的基本函数。

QUOTE:
原帖由 flw 于 2006-6-19 12:17 发表
妄加猜测,无知!

那你说说看?

QUOTE:
原帖由 flw 于 2006-6-19 12:17 发表
背后论人,卑鄙!

伸头接砖,最后两个字还给你!
c++的boost库里面有ireplace, ifind等等忽略大小写的字符串处理函数,python里面有没有?如果我没记错的话是没有。所以python的字符串处理也不是万能的!
而且我觉得能写出这些并不代表不是新手。lz等人不要对号入座,我是指我自己是新手,不是说别人。