在Python中用函数式编程来恶心人

好友caoshijun最近找我做一个字符串的解码,字符串来源于moinmoin,其中将部分字符和中文做了转义,变成了括号内的2位16进制字符。例子字符如下:

 

"caoshijun(2f)logo(2e)jpg"

 

可见"(2f)"对应"/",而"(2e)"对应"."。

 

于是写了一段Python程序用于解码,写完以后感觉可读性极差,如下:

 

import re
aaa="caoshijun(2f)logo(2e)jpg"
print 'result=',re.sub('\((.*?)\)',lambda sre:''.join(map(lambda idx:chr(int(sre.groups()[0][idx*2]+sre.groups()[0][idx*2+1],16)),range(len(sre.groups()[0])/2))),aaa)

 

解析后的运行结果如下:

 

result= caoshijun/logo.jpg

 

话说这其中用了两个lambda,以及map()之类的函数式编程的元素。在Python中有效的利用函数式编程可以将代码行数继续降低,有助于提高可读性,不过写到上面这种情况就不太好了。记得以前某书某牛说:“人类可以理解的代码行数是有限的。”感觉很有理。

你可能感兴趣的:(编程,python,haskell,FP)