python常用语法

来源:互联网 发布:关口知宏 对中国评价 编辑:程序博客网 时间:2024/06/06 03:51

(请点击目录)
前段时间学习,总是学到新的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/pythonstr = "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 docoptdef 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 MySQLdbimport jsondef 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 retconn = 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 rsrs1 = covert_to_json_string(rs)print rs1with 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是一种没有状态的,应用层的协议,在一种分布式,协作的超文本信息系统上。