有意思的记录-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
最近想做一个脚本小工具,方便写一些操作说明文档,它的功能很简单,就是把脚本打开之后,鼠标进行操作点击时,会在点击后进行截图,并在图上标记出点击的位置,有点类似于录屏软件的图片版,这样的话,如果要想用文 ...
随机推荐
- Azure Service Fabric 开发环境搭建
微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...
- vue入门学习(基础篇)
vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...
- jQuery遮罩层登录对话框
用户登录是许多网站必备的功能.有一种方式就是不管在网站的哪个页面,点击登录按钮就会弹出一个遮罩层,显示用户登录的对话框.这用方式比较灵活方便.而现在扫描二维码登录的方式也是很常见,例如QQ.微信.百度 ...
- 基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...
- [Top-Down Approach]Take Notes
Computer Networking - A Top-Down Approach Six Edition Learn HTTP Using Browser and Proxy 2016-03-20 ...
- .NET跨平台之旅:数据库连接字符串写法引发的问题
最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...
- 技术笔记:Delphi多线程应用读写锁
在多线程应用中锁是一个很简单又很复杂的技术,之所以要用到锁是因为在多进程/线程环境下,一段代码可能会被同时访问到,如果这段代码涉及到了共享资源(数据)就需要保证数据的正确性.也就是所谓的线程安全.之前 ...