作者归档:贝贝爸

贝贝趣事2则

贝贝这2天晚上不好好睡觉。
前天晚上折腾到11点多还不睡。唱歌,说话,不穿纸尿裤,把贝妈当马骑,到处吐口水。后来我生气了,让贝妈出去,我看着她。贝贝一看妈妈走了,就扯开嗓子哭。我们就都不理她,她就继续干嚎。过了一会儿,外婆听见了,不知道怎么回事,门口轻轻开了个门缝看看情况。我朝贝外婆挥挥手,意思让她回去睡觉,别管。贝贝看到我挥手,也挥了挥手说:“你回去~!”
昨天晚上还是不好好睡觉,也是玩儿一些老把戏,唱歌,说话,吐口水。昨天往贝妈身上吐,还扭贝妈。贝妈生气了,起身出去。说:你不乖,妈妈不陪你了!贝贝一脸无奈的说:“妈妈又发脾气了.”

python正则表达式学习

出处
python 中的re 模块

正则表达式

就个人而言,主要用它来做一些复杂字符串分析,提取想要的信息
学习原则:够用就行,需要的时候在深入

现总结如下:

正则表达式中特殊的符号:

“.” 表任意字符
“^ ” 表string起始
“$” 表string 结束
“*” “+” “?” 跟在字符后面表示,0个——多个, 1个——多个, 0个或者1个
*?, +?, ?? 符合条件的情况下,匹配的尽可能少//限制*,+,?匹配的贪婪性
{m} 匹配此前的字符,重复m次
{m,n} m到n次,m,n可以省略

举个例子 ‘a.*b’ 表示a开始,b结束的任意字符串
a{5} 匹配连续5个a

[] 表一系列字符 [abcd] 表a,b,c,d [^a] 表示非a
| A|B 表示A或者B , AB为任意的正则表达式 另外|是非贪婪的如果A匹配,则不找B
(…) 这个括号的作用要结合实例才能理解, 用于提取信息

\d [0-9]
\D 非 \d
\s 表示空字符
\S 非空字符
\w [a-zA-Z0-9_]
\W 非 \w

一:re的几个函数

1: compile(pattern, [flags])
根据正则表达式字符串 pattern 和可选的flags 生成正则表达式 对象

生成正则表达式 对象(见二)

其中flags有下面的定义:
I 表示大小写忽略
L 使一些特殊字符集,依赖于当前环境
M 多行模式 使 ^ $ 匹配除了string开始结束外,还匹配一行的开始和结束
S “.“ 匹配包括‘\n’在内的任意字符,否则 . 不包括‘\n’
U Make \w, \W, \b, \B, \d, \D, \s and \S dependent on the Unicode character properties database
X 这个主要是表示,为了写正则表达式,更可毒,会忽略一些空格和#后面的注释

其中S比较常用,
应用形式如下
import re
re.compile(……,re.S)

2: match(pattern,string,[,flags])
让string匹配,pattern,后面分flag同compile的参数一样
返回MatchObject 对象(见三)

3: split( pattern, string[, maxsplit = 0])
用pattern 把string 分开
>>> re.split(‘\W+’, ‘Words, words, words.’)
[‘Words’, ‘words’, ‘words’, ”]
括号‘()’在pattern内有特殊作用,请查手册

4:findall( pattern, string[, flags])
比较常用,
从string内查找不重叠的符合pattern的表达式,然后返回list列表

5:sub( pattern, repl, string[, count])
repl可以时候字符串,也可以式函数
当repl是字符串的时候,
就是把string 内符合pattern的子串,用repl替换了

当repl是函数的时候,对每一个在string内的,不重叠的,匹配pattern
的子串,调用repl(substring),然后用返回值替换substring

>>> re.sub(r’def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):’,
… r’static PyObject*\npy_\1(void)\n{‘,
… ‘def myfunc():’)
‘static PyObject*\npy_myfunc(void)\n{‘

>>> def dashrepl(matchobj):
… if matchobj.group(0) == ‘-‘: return ‘ ‘
… else: return ‘-‘
>>> re.sub(‘-{1,2}’, dashrepl, ‘pro—-gram-files’)
‘pro–gram files’

二:正则表达式对象 (Regular Expression Objects )

产生方式:通过 re.compile(pattern,[flags])回

match( string[, pos[, endpos]]) ;返回string[pos,endpos]匹配
pattern的MatchObject(见三)

split( string[, maxsplit = 0])
findall( string[, pos[, endpos]])
sub( repl, string[, count = 0])
这几个函数和re模块内的相同,只不过是调用形式有点差别

re.几个函数和 正则表达式对象的几个函数,功能相同,但同一程序如果
多次用的这些函数功能,正则表达式对象的几个函数效率高些

三:matchobject

通过 re.match(……) 和 re.compile(……).match返回

该对象有如下方法和属性:

方法:
group( [group1, …])
groups( [default])
groupdict( [default])
start( [group])
end( [group])

说明这几个函数的最好方法,就是举个例子

matchObj = re.compile(r”(?P\d+)\.(\d*)”)
m = matchObj.match(‘3.14sss’)
#m = re.match(r”(?P\d+)\.(\d*)”, ‘3.14sss’)

print m.group()
print m.group(0)
print m.group(1)
print m.group(2)
print m.group(1,2)

print m.group(0,1,2)
print m.groups()
print m.groupdict()

print m.start(2)
print m.string

输出如下:
3.14
3.14
3
14
(‘3′, ’14’)
(‘3.14’, ‘3’, ’14’)
(‘3′, ’14’)
{‘int’: ‘3’}
2
3.14sss

所以group() 和group(0)返回,匹配的整个表达式的字符串
另外group(i) 就是正则表达式中用第i个“()” 括起来的匹配内容
(‘3.14’, ‘3’, ’14’)最能说明问题了。

更进一步的学习,请看手册

python中关于文件路径的简单操作

出处
python中关于文件路径的简单操作

几个主要的函数:

1: os.listdir(path) //path为目录

功能相当于在path目录下执行dir命令,返回为list类型
举例:
print os.listdir(‘..’)
输出:
[a,b,c,d]

2: os.path.walk(path,visit,arg)

path :是将要遍历的目录
visit :是一个函数指针,函数圆形为:
callback(arg,dir,fileList)
其中arg为为传给walk的arg , dir是path下的一个目录,fileList为dir下的文件和目录组成的list
arg:传给visit用的,对walk没有什么作用

举例:
def callback(arg,directory, files):
print directory,
print files,
print arg
print '--------------------'

os.path.walk('.',callback, '123456')

输出:
. ['path0704.py', 'temp', '\xc2\xb7\xbe\xb6\xcf\xe0\xb9\xd8\xd1\xa7\xcf\xb0.txt'] 123456
--------------------
.\temp ['temp.h', 'temp1'] 123456
--------------------
.\temp\temp1 ['abc.bmp'] 123456

如果想找到某个目录下所有文件,只需要在callback里面,在fileList中找出文件,即可

除此之外,还有一个函数可以用那就是os.walk,看10

3:os.path.split(path)
path 为一个路径,

输出,把path分成两部分,具体看实例:
print os.path.split("abc/de.txt")
('abc', 'de.txt')
os.path.split("abc")
('', 'abc')
print os.path.split("de/abc/de")
('de/abc', 'de')

4: os.path.splitext(filename)
把文件名分成文件名称和扩展名
os.path.splitext(abc/abcd.txt)
('abc/abcd', '.txt')

5: os.path.dirname(path)
把目录名提出来
print os.path.dirname("abc")
#输出为空
print os.path.dirname('abc\def')
abc

6: os.path.basename(filename)
取得主文件名
print os.path.basename('abc')
abc
print os.path.basename('abc.txt')
abc
print os.path.basename('bcd/abc')
abc #这个需要注意不包括目录名称
print os.path.basename('.')
.

7:os.mkdir(path, [mode])
path为目录名: 这里有个要求,只能创建一级目录
比如path为 abc/def 则当前目录下必须存在abc 否则失败

8: os.makedirs(path [,mode])
可以创建多级目录

9:os.remove(path)删除一个文件,一定是一个文件
os.removedirs(path) 删除一个目录下所有东西
os.rmdir(path) 删除一个目录,而且一定要空,否则os.errer

10:os.walk(path)
遍历path,返回一个对象,他的每个部分都是一个三元组
(‘目录x’,[目录x下的目录list],目录x下面的文件)

举例:
a = os.walk('.')
for i in a:
print i
输出:
('.', ['abc', 'temp'], ['path0704.py', '\xc2\xb7\xbe\xb6\xcf\xe0\xb9\xd8\xd1\xa7\xcf\xb0.txt'])
('.\\abc', [], ['\xd0\xc2\xbd\xa8 BMP \xcd\xbc\xcf\xf1.bmp'])
('.\\temp', ['temp1'], ['temp.h'])
('.\\temp\\temp1', [], ['abc.bmp'])

11:shutil.copy(src,dst)
把文件src内容拷贝到文件dst中。,目标区域必须可以写,如果dst存在,则dst被覆盖

上面的函数基本够用
其它文件移动操作还请看:shutil模块:High-level file operations

php匹配所有中文的正则表达式

匹配所有中文字符的正则表达式是/[一-龥]/u,php代码如下。
要保存为utf-8编码

<?php
preg_match_all('/&#91;一-龥&#93;/u', '龥大家好一s々 Ⅳ 4 N ぁ Ψ Ж ㄩ ā 몸234adsf', $matchs);
print_r($matchs);
?>

运行结果如下:

Array
(
    [0] => Array
        (
            [0] => 龥
            [1] => 大
            [2] => 家
            [3] => 好
            [4] => 一
        )

)

下面是匹配所有不包含某个字符串的正则表达式:
^(?!.*?word).*$

如何把pps文件转换成ppt文件

同事有需求,要将pps文件转化成ppt文件,用里面的图片。
google了一把,刚看还要找什么软件,结果解决方法让人哭笑不得。
方法就是:把扩展名里面的字母”s”改成”t”。
如果看不到扩展名,就打开任意一个文件夹,点击“工具”里的”文件夹选项“里的”查看“,将”隐藏已知文件类型的扩展名“选项前的钩给去掉就可以了。
试了一下,居然神奇的打开了。。

美体小铺 The Body Shop的5大核心理念

Against Animal Testing 反对动物实验

当 The Body Shop由企业家安妮塔˙罗迪克创立之初,我们始终反对动 物测试化妆品。我们不但自己不做动物测试,并以其它科技方法代替, 更对原料供货商严格审核控管,绝不采购经过动物测试的成份。 从最早的护理皮肤?品系列到后来开发的护发和化妆用品, The BodyShop产品开发始终坚持的原则就是崇尚自然。 即坚持用纯天然的原料来制造各种化妆品和护肤产品, 一直到今天,TheBody Shop把这一宗旨视为公司发展和建立品牌的纲领。 实际上,这一宗旨表达了企业品牌的一种价值取向。 继续阅读

windows Live Messager(msn)一上线就CPU占用高的一种解决方案

自从msn更新到Windows Live Messenger 8以后,我就遇到了上线后CPU占用高,100%,基本上机器就没办法用了以后的8.1版本也一样。网上找,怎么也找不到原因,别人却没问题。上新的,没有联系人的帐号就没问题。我以为是联系人太多了,只好把原来一个msn换成2个问题仿佛暂时解决了,只是偶尔还会遇到这个问题,让人抓狂。
今天逛DRL,发现有一种解决方案如下,前提是你的机器使用的是nod32杀毒软件:

把%HOMEPATH%\Contacts\【your msn ID】\contactcoll.cache
在nod32的amon设置里面排除掉。如果有多个msn需要排除多个。
我的也是cpu100%。排除过文件后彻底好了。 

排除了看看效果。

料事如神

周六晚上,该睡觉的时候,贝贝居然不喝奶,这种事情很少见。贝妈掐指一算说,贝贝不喝奶,肯定是不舒服,要坏事儿。以往都是这样。
果不其然,睡了一会儿的贝贝,打了个嗝。贝妈发现这个信号,就以迅雷不及掩耳之势,把贝贝从床里面转移到外边,拯救了枕头和床单。结果把晚上吃的橙子,花生,核桃,晚饭,都吐了出来。
可怜的贝贝一个晚上吐了6,7次,最后连刚喝的水都吐出来了。一直到早上才好点,每次2,3勺的喂她水,煮的大米粥里的水,小米里的水才不吐。但是每次都喂很少。贝贝可怜的说:贝贝饿,贝贝不舒服,贝贝要喝水。我们也坚持少量多次的原则。
中午去了一次六院,排队2,3个钟头,看了2,3分钟。做了个血液检查,说白细胞值有点高。医生说,饿三天,开了2种药就回家了。验血的时候,贝贝哭的那叫一个凄惨,很不配合,最后只能用强制手段解决了问题。

可怜的贝贝,赶紧好起来吧,你还要再饿一下哦

上百个让你事半功倍的jquery插件

jQuery是一个了不起的javascript库,它可以是我们用很少的几句代码就可以创建出漂亮的页面效果。从网站的方面说,这使得javascript更加有趣。

很多jquery爱好者开发了基于jquery的插件,在这里
发现作者收集好多jquery的插件,转贴过来,给大家分享。

File upload-文件上传

Ajax File Upload
jQUploader
Multiple File Upload plugin
jQuery File Style
Styling an input type file
Progress Bar Plugin

Form Validation-表单验证

jQuery Validation
继续阅读