(请点击目录)
前段时间学习,总是学到新的python语法类,库类的知识,遇到的就写一篇博客,有点散落,今天花写时间整理成一篇python基础小杂烩,之后遇到的类似的问题会持续更新下面。
字符串替换replace()
将“hello world”替换为“hello python”
str = "hello world"
str.replace("world","python")
//hello python
字符串查找find()
find用于字符串查找,不存在返回值为-1。
str = "123"
str.find('0')
//-1
join()函数的用法:
函数描述
python join()方法用于将序列中的元素以指定的字符连接成一个新的字符串。语法
s.join(sequence)
参数
sequence :要连接的元素序列 。
s : 连接的方式返回值
返回通过指定字符连接序列中元素后生成的新字符串。- 实例
# -*- coding:utf-8 -*-
s = '*'
seq = ("a", "b", "c") #字符串序列
print s.join( seq )
输出: a*b*c
输出中文
#python2.7
# -*- coding: utf-8 -*-
print u'许娜'
zfill()语法
- 函数描述
Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。 - 语法
str.zfill(width)
- 参数
width – 指定字符串的长度。原字符串右对齐,前面填充0。 - 返回值
返回指定长度的字符串。 - 实例
#!/usr/bin/python
str = "this is string example....wow!!!";
print str.zfill(40);
print str.zfill(50);
输出结果:
00000000this is string example....wow!!!
000000000000000000this is string example....wow!!!
排序 sort 与 sorted
sort和sorted定义区别:
sort是应用在列表list上的方法,sorted可以对所有可迭代的对象进行排序操作。
list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作。sort和sorted语法区别:
sort()方法语法:list.sort([func])
参数:func–可选参数。
返回值:无返回值,但是会对列表的对象进行排序。
sorted()方法语法:
sorted(iterable[, cmp[, key[, reverse]]])
参数:
iterable : 可迭代对象
cmp : 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返 回1,小于 则返回-1,等于则返回0。
key :主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象 中的一个元素来进行排序。
reverse : 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值 :返回重新排序好的列表
- 例题:
给你一个list L, 如 L=[2,8,3,50], 对L进行降序排序并输出,
如样例L的结果为[50,8,3,2]
代码:
[python] view plain copy
print?
m=sorted(L,reverse=True)
print m
列表嵌套字典-按照字典某个key排序
來一個小例子:
问题: 给你一个列表嵌套字典的列表,让你根据字典里面的name关键字从小到大排序?
sort不仅能列表排序,字典排序,还可以嵌套排序。
注意:reverse = False 升序,True为降序
a = [{'letter': 'b','name':'0'}, {'letter': 'c','name':'9'}, {'letter': 'd','name':'4'}, {'letter': 'a','name':'2'}]
a.sort(key=lambda x: x['name'], reverse=False)
print a
运行结果:
docopt :命令行解析小工具
描述
docopt能根据你写的文档描述,自动生成解析器,可以为Python小程序创造优雅的命令行界面(Command Line Interface)。安装
我的环境:ubuntu16.04 + python3.5.2
现在我们使用最优雅的安装方法sudo pip3 install docopt
小例子演示一下
# !usr/bin/env/python3.5.2
# -*- coding:utf-8 -*-
"""
Usage:
ticket [-dgktz] <from> <to> <date>
Options:
-h --help Show this screen.
-d 动车
-g 高铁
-k 快速
-t 特快
-z 直达
"""
from docopt import docopt
def cli():
arguments = docopt(__doc__, version = 'tickets 1.0')
date_station = arguments.get('<date>')
print (arguments)
if __name__ == '__main__':
cli()
运行:
下面解释一下:
Usage: 用法
Options: 选项
[-dgktz] :代表可选的选项,上面没有选择方括号中的任一项,所以运行之后每一个都是显示的False。
从运行结果可以看到返回的是字典类型,这对于后续提取数据十分方便。
同时可以看到docopt用起来很方面,只需编写一个帮助文档,就可以创建CLI
更新:
上面没有选择[Options]里面的内容所有显示的都是false,接下来选择里面的选项后看一下结果:
选中的信息显示为true,这对于我们筛选信息很有用的。
将从数据库提取的数据转为json格式
JSON是一种轻量级的数据交换格式。其简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
下面一个小例子演示一下怎样将数据库中的内容通过提取json转换为可读性更高的内容。
数据库中的一个student表内的内容:
mysql> select * from student;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+
3 rows in set (0.00 sec)
目标是得到如下格式的数据
{
"items": [
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
},
{
"id": 3,
"name": "name3"
}
]
}
代码:
# -*- coding:utf-8 -*-
import MySQLdb
import json
def covert_to_json_string(data):
ret = []
for i in data:
tmp = {'id':i[0],'name':i[1]}
ret.append(tmp)
ret = json.dumps({'items': ret},sort_keys=True,indent=4)
return ret
conn = MySQLdb.Connect(
host = '127.0.0.1',
port = 3306, #注意端口号为数字类型,其余都为字符串
user = 'root',
passwd = 'root',
db = 'test',
charset = 'utf8'
)
cursor = conn.cursor()
sql = "select * from student"
cursor.execute(sql)
rs = cursor.fetchall()
print rs
rs1 = covert_to_json_string(rs)
print rs1
with open('/home/xuna/1.json', 'w') as handle:
handle.write(rs1)
cursor.close()
conn.close()
编码错误:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position
0: ordinal not in range(128)
对于这种情况,我们有两种方法来改正错误:
一是明确的指示
#! /usr/bin/env python
# -*- coding: utf-8 -*-
s = '中文'
s.decode('utf-8').encode('gb18030') 改 sys.defaultencoding 为文件的编码方式
二是更改 sys.defaultencoding 为文件的编码方式
# -*- coding: utf-8 -*-
import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb18030')
列表解析
普通方法创建平方表:
squares = []
for value in range(1,11):
square = value**2
squares.append(square)
print (squares)
运行结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表解析将for 循环和创建新元素的代码合并成一行,并自动附加新元素。
下面的示例使用列表解析创建平方数列表。
squares = [value**2 for value in range(1,11)]
print (squares)
要使用这种语法,首先指定一个描述性的列表名,如square;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储列表中的值,在这个示例中,表达式为value**2,它计算平方值。接下来,编写一个for循环,用于给表达式提供值,在加上右方括号,在这个例子中,for循环为 for value in range(1,11),它将值1~10提供给表达式value**2。请注意for语句末尾没有冒号。
要创建自己的列表解析,需要经过一定的练习,但能够熟练的创建常规列表后,你会发现这样做是完全值得的,当你觉得编写三四行代码来生成列表有点繁复时,就可以考虑创建列表解析。
参考:Python编程:从入门到实践
Python 汉字转化成拼音
安装包 pypinyin 0.23.0
可以使用 pip 进行安装:(我用的第一种)
$ pip install pypinyin
easy_install 安装:
$ easy_install pypinyin
源码安装:
$ python setup.py install
使用
python 中如何判断list中是否包含某个元素
在Python中可以通过in和not in关键字来判读一个list中是否包含一个元素
theList = ['a','b','c']
if 'a' in theList:
print ('a in the list')
if 'd' not in theList:
print ('d is not in the list')
运行结果:
a in the list
d is not in the list
什么是爬虫
爬虫
一段自动抓取互联网信息的程序价值:
互联网数据,为我所用
12.什么是http协议
- 全称 :
HyperText Transfer Protacol
http是一种没有状态的,应用层的协议,在一种分布式,协作的超文本信息系统上。
来源:CSDN
作者:xunalove
链接:https://blog.csdn.net/xunalove/article/details/77040819