有意思的记录-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" + "\n")
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')
有意思的记录-python的更多相关文章
- 记录Python学习中的几个小问题
记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...
- 使用配置文件方式记录Python程序日志
开发者可以通过三种方式配置日志记录: 调用配置方法的Python代码显式创建记录器.处理程序和格式化程序. 创建日志配置文件并使用fileConfig() 函数读取. 创建配置信息字典并将其传递给di ...
- Beats:使用 Elastic Stack 记录 Python 应用日志
文章转载自:https://elasticstack.blog.csdn.net/article/details/112259500 日志记录实际上是每个应用程序都必须具备的功能.无论你选择基于哪种技 ...
- [记录][python]python爬虫,下载某图片网站的所有图集
随笔仅用于学习交流,转载时请注明出处,http://www.cnblogs.com/CaDevil/p/5958770.html 该随笔是记录我的第一个python程序,一个爬去指定图片站点的所有图集 ...
- 详细记录python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
- 优雅地记录Python程序日志2:模块组件化日志记录器
本文摘自:https://zhuanlan.zhihu.com/p/32043593 本篇将会涉及: logging的各个模块化组件 构建一个组件化的日志器 logging的模块组件化 在上一篇文章中 ...
- 优雅地记录Python程序日志1:logging模块简介
本文摘自:https://zhuanlan.zhihu.com/p/31893724 本篇涉及: logging模块的调用: 保存log日志为文件: 调整输入日志等级: 修改日志消息格式: 前言 在使 ...
- 记录python面试题
闲来无事,记录一下曾经以及深刻的面试题 记录一下我记忆比较深的面试题,以后若用到python相关还能细细把玩 搜狐面试题: 一.写一个缓存优化策略 解答:这个题主要考察对lru_cache的理解,所以 ...
- 屏幕截图小工具的制作过程问题记录 python PIL pynput pyautogui pyscreeze
最近想做一个脚本小工具,方便写一些操作说明文档,它的功能很简单,就是把脚本打开之后,鼠标进行操作点击时,会在点击后进行截图,并在图上标记出点击的位置,有点类似于录屏软件的图片版,这样的话,如果要想用文 ...
随机推荐
- TechEmpower 13轮测试中的ASP.NET Core性能测试
应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚.在选择框架时, ...
- Azure Service Fabric 开发环境搭建
微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...
- requests的content与text导致lxml的解析问题
title: requests的content与text导致lxml的解析问题 date: 2015-04-29 22:49:31 categories: 经验 tags: [Python,lxml, ...
- OpenCASCADE AIS Manipulator
OpenCASCADE AIS Manipulator eryar@163.com Abstract. OpenCASCADE7.1.0 introduces new built-in interac ...
- 一篇文章看懂TPCx-BB(大数据基准测试工具)源码
TPCx-BB是大数据基准测试工具,它通过模拟零售商的30个应用场景,执行30个查询来衡量基于Hadoop的大数据系统的包括硬件和软件的性能.其中一些场景还用到了机器学习算法(聚类.线性回归等).为了 ...
- Web安全相关(三):开放重定向(Open Redirection)
简介 那些通过请求(如查询字符串和表单数据)指定重定向URL的Web程序可能会被篡改,而把用户重定向到外部的恶意URL.这种篡改就被称为开发重定向攻击. 场景分析 假设有一个正规网站http:// ...
- 强强联合,Testin云测&云层天咨众测学院开课了!
Testin&云层天咨众测学院开课了! 共享经济时代,测试如何赶上大潮,利用碎片时间给女票或者自己赚点化妆品钱? 2016年12月13日,Testin联手云层天咨带领大家一起推开众测的大门 ...
- linux的top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- VisualStudio 2015 开启IIS Express可以调试X64项目
现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢. 如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 ...
- Google Java编程库Guava介绍
本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含集合(Collections),缓存(Caching),并发编程库(C ...