文档章节

小代码

dfkjih
 dfkjih
发布于 2016/01/27 18:22
字数 1277
阅读 25
收藏 0
点赞 1
评论 0

1. 对一段字符串按指定长度分割

aa = 'aaabbbcccdddfffggg'
def chunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i+n]
x = list(chunks(aa, 3))
print(x)     #['aaa', 'bbb', 'ccc', 'ddd', 'fff', 'ggg']


推导式:

print(list(aa[i:i+3] for i in range(0, len(aa), 3)))


2. 合并列表中的列表为一个列表

aa = [['qq'],['ww'],['ee']]
x = [i for n in aa for i in n]
print(x)#['qq', 'ww', 'ee']


3. 使用dict格式化输出

foo = {'name':'sun'}
aa = 'this is show dict %(name)s' % foo
print(aa)    #this is show dict sun


4. 形参对象魔法

def try_to_change_1(n):
    n = "another"
name = "other"
try_to_change_1(name)
print name #output:other  name不会改变

def try_to_change_2(n):
    n[0] = "another"
names = ["name1", "name2", "name3"]
try_to_change_2(names)
print name #这次可以改变name的值

为什么trytochange_1不会改变name的值?实际两个函数做的事情如下:

#1

name = "other"

n = name

n = "another"

#2

name = [x, x, x]

n = name

n[0] = "another"

如果你知道Python里的对象引用,自然就会明白。如果想要避免trytochange_2的情况,可以复制一个列表的副本:

names = ["name1", "name2", "name3"]

n = names[:]

5. reload(sys)

import sys
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)


6. python 编码问题

6.1 创建中文目录

python 2.X  os.mkdir() 创建中文文件夹的时候,会报错

在代码头部加入:from __future__ import unicode_literals

即可

from __future__ import unicode_literals
import os
path=r'D:\tmp\哈哈'
os.mkdir(path)

6.2 2.x 将中文写入/读取文件

#coding: U8
aa = u'得到fdfsf'
with open('sun.log', 'w') as f:
    f.write(aa.encode('U8'))
with open('sun.log') as f:
    x = f.read().decode('U8')
    print(x)

6.3 3.x 爬虫抓取内容含中文

windows下将抓取到的网页保存之文本中,出现报错:

'gbk' codec can't encode character

解析:

在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,

然而txt此时已经是 decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。 解决的办法就是,改变目标文件的编码:

f = open("out.html","w",encoding='utf-8')


7. 切片用法

中括号里两个冒号,那么两个冒号后面的数代表步长,就是隔几个元素取一次。

a = '122345678'
print(a[1::4])     #25
a = '122345678'
print(a[::4])    #148

8. 随机生成大小写数字字符串

import string, random
x = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(5))
print(x)

9. 下载文件

# Python 2 code
import urllib
import urllib2
import requests
               
url = 'http://192.168.1.100/test.zip'
               
print "downloading with urllib"
urllib.urlretrieve(url, "code.zip")
               
print "downloading with urllib2"
f = urllib2.urlopen(url)
data = f.read()
with open("code2.zip", "wb") as code:
    code.write(data)
               
print "downloading with requests"
r = requests.get(url)
with open("code3.zip", "wb") as code:
    code.write(r.content)

10. 字符串格式化

>>> "{key}={value}".format(key="a", value=10) # 使⽤命名参数
'a=10'
>>> "[{0:<10}], [{0:^10}], [{0:*>10}]".format("a") # 左中右对⻬
'[a         ], [    a     ], [*********a]'
>>> "{0.platform}".format(sys) # 成员
'darwin'
>>> "{0[a]}".format(dict(a=10, b=20)) # 字典
'10'
>>> "{0[5]}".format(range(10)) # 列表
'5'
>>> "My name is {0} :-{{}}".format('Fred') # 真得想显示{},需要双{}
'My name is Fred :-{}'
>>> "{0!r:20}".format("Hello")
"'Hello'             "
>>> "{0!s:20}".format("Hello")
'Hello               '
>>> "Today is: {0:%a %b %d %H:%M:%S %Y}".format(datetime.now())
'Today is: Mon Mar 31 23:59:34 2014'
(PEP3101)

11. 将变量保存在文件中

#config.py
a = 1
#main.py
import config
print('a = %s' %config.a)


12. 拷贝和深拷贝

1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。

2. copy.deepcopy 深拷贝 拷贝对象及其子对象

一个很好的例子:

import copy
a = [1, 2, 3, 4, ['a', 'b']]  #原始对象
b = a  #赋值,传对象的引用
c = copy.copy(a)  #对象拷贝,浅拷贝
d = copy.deepcopy(a)  #对象拷贝,深拷贝
a.append(5)  #修改对象a
a[4].append('c')  #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =  [1, 2, 3, 4, ['a', 'b', 'c']]
d =  [1, 2, 3, 4, ['a', 'b']]
  • 思路一:利用切片操作和工厂方法list方法拷贝就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。

  • 思路二:利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。

  • 但是对于数字,字符串和其他原子类型对象等,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

13. exec & eval

eval(str [,globals [,locals ]])
    函数将字符串str当成有效Python表达式来求值,并返回计算结果。
>>> eval('1+2+3')
6
>>> x = 1
>>> eval('x+2+3')
6
exec(object[, globals[, locals]]) 
    将字符串str当成有效Python代码来执行。
>>> exec('print("I Love FishC.com !!!")')
I Love FishC.com !!!
>>> exec('x = 520')
>>> x
520

14. try

打开文件:

try:
    f = open('不存在的文件')
    f.read()
    f.close()
except (OSError, TypeError) as e:
    print('文件出错啦,原因是:' + str(e))


15. 创建日期时间目录

import os
import time
folder=time.strftime(r'%m%d_%H%M',time.localtime())   #0129_1458
os.mkdir(os.getcwd()+'/'+folder)

16. 函数locals()

示例用法:   

if 'f' in locals():
        f.close()

如果变量f在当前局部变量中,则关闭。


© 著作权归作者所有

共有 人打赏支持
dfkjih
粉丝 0
博文 23
码字总数 13951
作品 0
浦东

暂无文章

50 行 Python 代码,带你追到最心爱的人

程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个。甚至程序员自己也这样形容自己:钱多话少...

猫咪编程
7分钟前
0
0
JAVA知识点随心记

1.Switch case具体的支持类型? Q:支持byte、short、char、int基本类型,枚举类型和String类型(JDK7以上支持),四种基本类型的包装类型也支持,但是原因在于触发了自动拆箱,将包装类型拆成了基本...

勤奋的蚂蚁
18分钟前
0
0
NoSQL

一、NoSQL介绍 NoSQL属于非关系型数据,mysql属于关系型数据库。 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当数据量非常大的时候...

人在艹木中
23分钟前
0
0
第17章MySQL主从配置

mysql安装总结 mysql主从准备工作: 准备两台机器,每台机器安装msyql服务,并启动mysql服务 mysql详细安装 1.首先下载二进制免编译的包,下载到/usr/local/src/目录下 2.解压压缩包 3.解压完...

Linux学习笔记
26分钟前
0
0
Redis高可用及分片集群

一、主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化...

Java大蜗牛
30分钟前
0
0
前端面试题汇总

最近在复习,准备找工作了,特此总结一下前端的相关知识。 1.获取浏览器URL中查询字符的参数: function getQuery(name){    var reg = new RegExp("(^|&)"+name+"=([^&]*)"(&|$));...

凛冬来袭
今天
0
0
可持续发展的学习道路

与其要求别人,不如提升自己 内心渴望进步 经常做出改变现有模式,不断学习 寻找资源,整合资源,不断熟练这种模式 渠道很重要 先打开新世界的航路

狮子狗
今天
0
0
apollox-lua开源项目 示例codepen2

今天在示例上增加了几个功能, 首先添加js array的标准库。 所有js array的方法目前都支持了。 添加查看code模式。 点击查看code可以看到生成的lua代码。默认web模式需要把标准库连接进来, ...

钟元OSS
今天
0
0
javascript性能优化之避免重复工作

javascript最重要也最根本的性能优化标准之一是避免工作,避免工作又包括两点,第一,不做不必要的工作,第二,不做重复的已经完成的工作。第一部分可以通过代码重构完成,第二部分不做重复的...

老韭菜
今天
0
0
缓存穿透、并发和雪崩那些事

0 题记 缓存穿透、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题,本文讲解其产生原因和解决方案。 缓存穿透通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪...

Java填坑之路
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部