zoukankan      html  css  js  c++  java
  • 有意思的记录-python

    1.变量

    类变量紧接在类名后面定义,相当于java和c++的static变量
    实例变量在init里定义,相当于java和c++的普通变量

    2.日期

    #coding:utf-8
    import time
    import datetime
    #日期格式化,time.strftime(format[, t]),
    #输出:2015-08-28 15:50:51
    currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    #日期加减,输出:2015-08-27
    yesterday = datetime.date.today() - datetime.timedelta(days=1)
    print yesterday.strftime("%Y-%m-%d")
    #日期字符串转化为时间戳time.strptime(string[, format])
    #struct_time格式:time.struct_time(tm_year=2015, tm_mon=3, tm_mday=12, tm_hour=15, tm_min=1, tm_sec=1, tm_wday=3, tm_yday=71, tm_isdst=-1)
    #秒数:
    timeStruct = time.strptime("2015-03-12 15:01:01", '%Y-%m-%d %H:%M:%S')
    #返回秒数:1426143661.0
    seconds = time.mktime(timeStruct)
    print seconds

    3.json

    json.dumps(obj)JSON转为字符串
    json.loads(str)字符串转为JSON

    4.文件读写

    queryFile = open('top_query')
    for line in queryFile:
        print line
    queryFile.close()
    queryFile = open('top_query', 'w')
    queryFile.write("miphone" + "
    ")
    queryFile.close()

    5.字符串编辑距离

    编辑距离也称为Levenshtein距离,用于衡量两个字符串的相似度,一个字符串向另一个字符串变化经历的操作(新增/删除/替换字符)次数。python提供官方库python-levenshtein,使用如下。

    import Levenshtein
    #输出2,abc:b替换为f得afc,删除c得af,两次操作
    Levenshtein.distance("abc", "af")
    #ratio函数获得小于1的小数,更直观的衡量相似度,1完全相同,0是完全不同
    #计算公式是r=(sum - dist) / sum,sum是两字符串长度和,dist为类编辑距离,删除/新增距离依然+1,替换距离+2,r=(5-3)/5=0.4
    Levenshtein.ratio("abc","af)
    #中文比较,要转为unicode编码,才能获得正确结果
    Levenshtein.distance(u"中国",u"北京")
    Levenshtein.distance(unicode("中国", "utf-8"), unicode("北京", "utf-8"))
    Levenshtein.ratio(unicode("中国", "utf-8"), unicode("北京", "utf-8"))

    这里写图片描述

    6.包含元组的list

    元素是元组格式的list进行排序和格式化输出

    queryList = [("iphone", 1), ("miphone", 10)]
    queryList.sort(key=lambda item:item[1], reverse=True)
    str = ",".join([k + ":" + str(v) for (k, v) in queryList])

    这里写图片描述

    7. 读配置文件

    为了更好的维护程序,提高程序的灵活性,往往使用配置文件来设置程序中的变量。

    config文件

    [global]
    ip=10.3.22.26
    port=123
    user=user
    password=user

    读取

    import ConfigParser
    config1 = ConfigParser.ConfigParser()
    config1.readfp(open("config","rb"))
    print config1.get("global","ip") 

    8. 正则表达式处理字符串

    替换字符串中特定格式的子串

    import re
    pattern=re.compile('[d*]') #[1],[1234]此类格式
    str='[1]123 [2]245 [3]789'
    #去掉[...]
    str1=pattern.sub('',str)

    以特定格式子串为分隔符,分割字符串,返回列表

    arr=re.split('[d*]',str1)
    

    9.HTTP请求

    import json
    import time
    import urllib
    import urllib2
    
    #用quote来转义特殊字符
    url = "http://mvideo.n.duokanbox.com/api/a1/search?kw=" +urllib.quote(keyword)
    req = urllib2.Request(url)
    conn = urllib2.urlopen(req)
    res = conn.read()
    res = json.loads(res)
    
    print res

    10.字符串长度

    len(string)返回的是字节数,len(unicode)返回的是字符数

    11.dict

    #遍历dict
    for k,v in dict.iteritems():  
        print '%s:%s' % (k, v)  
    

    12.编码错误

    提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

    解决:

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8') 

     

  • 相关阅读:
    《UIP在NIOS上的移植》
    切勿使用:指向局部变量的指针作为函数的返回指针!
    Oeacle创建表空间
    Oracle SQL 语言分类
    线程整理
    输入输出
    异常处理
    哈希算法
    java链表
    课上重点整理
  • 原文地址:https://www.cnblogs.com/whuqin/p/4981954.html
Copyright © 2011-2022 走看看