Python Cookbook笔记

  1. 字符串:s.strip()  删除字符串开始和结尾的空白字符。 s.lstrip() 删除左边的,s.rstrip()  删除右边的。

  2. 随机数:random.random()  生成0-1之间的数。       random.randint(0,100) 生成0-100之间的整数。

  3.  unicode文本标准化

    1  import unicodedata        
    2  unicodedata.normalize(‘NFD’, s)
  4. 文件: with open() as f: with控制块结束时,文件会自动关闭。
          f = open(), f.close() 不使用with时,需手动关闭
             向文件追加内容,而不覆盖文件内容, 用at(ab)模式 or xt(xb)模式
             文件是否存在: os.path.exists('somefile')

  5. 字节字符串与十六进制之间的转换:

     1  import binascii                              
     2  s = b'hello'                               
     3  h = binascii.b2a_hex(s)                   
     4  binascii.a2b_hex(h)                      
     5 
     6 
     7 
     8  import base64
     9  s = b'hello'
    10  h = base64.b16encode(s)
    11  base64.b16decode(h)
  6. struct模块 编码和解码二进制数据:
             <表示字节顺序低位开始, >表示从高位开始,i表示32位整数(4字节),d表示64位浮点数(8字节), f表示32位浮点数(4字节), !表示网络字节顺序

     1  from struct import Struct
     2  record = Struct('<idd')   
     3  record.size                             #4+8+8 大小为20
     4  record.pack(1, 2.0, 3.0) 
     5  record.unpack(_)
     6 
     7 
     8   #  另一种方法
     9  import struct
    10  struct.pack('<idd', 1, 2.0, 3.0) 
    11  struct.unpack('<idd', _)
  7. id() 方法返回值是对象的内存地址。

  8. eval()  函数可以把string格式的对象转为引号内原来的类型。 例如: a = '123',  b=eval(a)  则b为int类型。

  9. yield: 生成器  对当前迭代进行操作,每次返回当前迭代的值.并没有把所有值放在内存中,动态地生成值.

  10. lambda表达式:   匿名函数,不需要def定义和return显式返回。

  11. 正则匹配手机号、邮箱:

    1  a = 'xxxx'    
    2  p = re.compile('[^\._-][\w\.-]+@(?:[A-Za-z0-9]+\.)+[A-Za-z]+$|^1[3578]\d{9}$|^147\d{8}$')    
    3  b = p.match(a)
    4  # [^\._-]    匹配不含. _ -等特殊字符
    5  # (?:pattern) 匹配不获取匹配结果
  12. 时间操作:

    1  # 北京时间:string类型
    2  a = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  
    3  # utc时间:date类型  
    4  b = datetime.datetime.utcnow()   
    5  # 加减时间: 
    6  a+datetime.timedelta(hours=8)    # 加8小时
    7  a+datetime.timedelta(days=8)         # 加8天

     

  13. 获取当月第一天日期:              

    1. datetime模块:

  14. 1  d = datetime.datetime.now()
    2  m = d.month
    3  y = d.year
    4  date = datetime.datetime(y, m, 1)

            2. time模块:

    1 import time
    2  a = time.localtime()
    3  end_time =str(datetime.datetime(get_time.tm_year,get_time.tm_mon,get_time.tm_mday, 23, 59, 59))   # 获取当前时间:年月日时分秒
    4  start_time = str(datetime.datetime(get_time.tm_year,get_time.tm_mon,1))      # 获取当月第一天日期
  15. 使用线程队列有一个要注意的问题是,向队列中添加数据项时并不会复制此数据项,线程间通信实际上是在线程间传递对象引用。如果你担心对象的共享状态,那你最好只传递不可修改的数据结构(如:整型、字符串或者元组)或者一个对象的深拷贝。 copy.deepcopy(data)

  16. Jquery获取当前时间:
    1 function currentTime() {
    2             var d = new Date(), str = '';
    3             str += d.getFullYear() + '年';
    4             // 月份、天数计算从0开始,需要加1
    5             str += d.getMonth() + 1 + '月';
    6             str += d.getDate() + 1 + '日';
    7             return str;
    8         }

     

  17. 多进程与多线程
    计算密集型程序,多进程并发优于多线程;IO密集型程序,多线程并发优于多进程
    multiprocessing.JoinableQueue, concurrent.futures.ProcessPoolExecutor(进程池) 是多进程安全的,不产生死锁

posted on 2016-10-17 17:05  logicalsky  阅读(309)  评论(0编辑  收藏  举报

导航