python常用语法

主宰稳场 提交于 2019-12-08 04:45:12

(请点击目录)
前段时间学习,总是学到新的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是一种没有状态的,应用层的协议,在一种分布式,协作的超文本信息系统上。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!