刚刚学了点基础语法和爬虫入门,打算整理一下,会通俗易懂的语言来说明
基础语法,总共有13块知识点。最主要是为后边的基础爬虫作个准备工作,每一个知识点中间可能会掺杂点其他的语法,希望对你有帮助(#.#)
基础爬虫当然就是最基础的爬虫。大概就是些BeautifulSoup、json、selenium、scrapy啥的,还会有一些实操内容,比如爬取网页信息并储存、一些模块的使用、制作图灵机器人 和 翻译机 等等~
我用的是python 3.7
,下载后也会自动下载集成开发环境IDLE
,也可以在此编写代码。当用pycharm
有更多的功能,可以去官网下载。
这里是:Python基础基础Ⅱ
这里是:Python爬虫基础Ⅰ
有俩在线编程的网站:
Python在线工具 | 菜鸟工具
Online Python Compiler
其实很多都可以百度到,比起c++,真是“人生苦短,我用python”
。
python里所有符号都是用的英文半角!
运算符 | 表示 | 例子 |
---|---|---|
+ | 加 | 2+1 输出结果 3 |
- | 减 | 1-2 输出结果 -1 |
* | 乘 | 1*2 输出结果 2 |
/ | 除 | 1/2 输出结果 0.5 |
% | 取模x%y–返回余数 | 5%2 输出结果 1 |
** | 幂x**y–返回x的y次幂 | 2**3 为2的3次方,输出结果 8 |
// | 取整除–返回商的整数部分 | 11//2 输出结果 5 11.0//2.0 输出结果 5.0 |
最简单的了,就是在终端print(打印)出括号里的。
用法:print('hello,world!')
,运行后终端会显示引号内的内容。
(格式控制在后边讲)
Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1
,100
,-8080
,0
等等。
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。浮点数可以用数学写法,如1.23
,3.14
,-9.01
,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9
,或者12.3e8
,0.000012可以写成1.2e-5
,等等。
字符串是以''
或""
括起来的任意文本,比如'abc'
,"xyz"
等等。请注意,""
本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'
只有a,b,c
这3个字符。
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(注意大小写),也可以通过布尔运算计算出来。
布尔值可以用and
、or
、not
、in
、not in
运算。
and
运算是与运算,只有所有都为 True,and运算结果才是 True。
如print(1 and 0)
结果是False
or
运算是或运算,只要其中有一个为 True,or 运算结果就是 True。
not
运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。
(in
和not in
在后边 set 那里会讲到)
空值是Python里一个特殊的值,用None
表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据。
>>> list1 = [1, 1, 2.0, '3'] #直接用中括号括起来,列表里每个元素用','分隔
>>> print(type(list1))
<class 'list'>
>>> print(list1)
[1, 1, 2.0, '3']
>>> list1 = [1, 1, 2.0, '3']
>>> print(len(list1))
4
索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。
而索引 -1、-2则表示倒数第1个、第2个元素,以此类推。
使用倒序索引时,也要注意不要越界,否则会报错。
>>> list1 = [1, 1, 2.0, '3']
>>> print(list1[0],list1[1]) #输出list1中前两个元素,中间用一个空格分隔
1 1
第一个方法是用 list 的append()
方法,把新元素追加到 list 的末尾:
>>> list1 = [1, 1, 2.0, '3']
>>> list1.append(0)
>>> print(list1)
[1, 1, 2.0, '3', 0]
第二个方法是用list的insert()
方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:
>>> list1 = [1, 1, 2.0, '3']
>>> list1.insert(1,'0') #在索引为1的位置插入'0'
>>> print(list1)
[1, '0', 1, 2.0, '3']
第一个方法是del 列表名[元素的索引]
可以删除列表中的元素
>>> list1 = [1, 1, 2.0, '3']
>>> del list1[2]
>>> print(list1)
[1, 1, '3']
第二个方法是pop()
方法,总是删掉list的最后一个元素,并且它还返回这个元素。
>>> list1 = [1, 1, 2.0, '3']
>>> element = list1.pop()
>>> print(element)
3
>>> print(list1)
[1, 1, 2.0]
直接赋值即可,如list1[1] = 5
,是把list里第1个(索引为1)元素替换成5,注意下标不要越界。
“:”切片很方便,左右空取到头,左取右不取,用法如下:
>>> list1 = [1, 1, 2.0, '3']
>>> list2 = list1[:] #左右空取到头,即整个列表
>>> list3 = list1[:2] #左空取到头,第0个;右不取,取到第1个;即第0个到第1个元素组成的列表
>>> list4 = list1[-3:-1] #左取右不取,即倒数第3个元素到倒数第2个元素组成的列表
>>> print(list2)
[1, 1, 2.0, '3']
>>> print(list3)
[1, 1]
>>> print(list4)
[1, 2.0]
字符串也可以看成一种list,list中的每个元素就是一个字符:
>>> 'ABCDEFG'[:3]
'ABC'
>>> string = 'ABCDEFG'[-3:]
>>> print(type(string),string)
<class 'str'> 'EFG'
列表合并直接相加'+'
就行。
>>> list1 = [1,2,3]
>>> list2 = ['1','2','3']
>>> list12 = list1 + list2
>>> print(list12)
[1, 2, 3, '1', '2', '3']
( 好吧原谅我懒了♪(∇*) )点击这里查看。
通常用来表示两类有一一对应关系的数据。
花括号 {}
表示这是一个dict,然后按照 key: value
, 写出来即可。最后一个 key: value 的逗号可以省略。
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> print(type(dict1))
<class 'dict'>
注意:在一个dict中,key不能重复,key也不可变,如key不能为一个列表(因为list是可变的)。且dict的储存是无序的。
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> print(len(dict1))
3
可以简单地使用 dict[key]
的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> print(dict1[2]) #访问键值为2的对应的value值
two
注意:通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError
。
要避免 KeyError
发生,有两个办法:
一是先判断一下 key 是否存在,用 in
操作符:
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> if 1 in dict1:
... print(dict1[1])
one
二是使用dict本身提供的一个 get()
方法,在Key不存在的时候,返回None
:
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> print(dict1.get(7))
None
我们可以通过dict[key] = xxx
而更新dict,若key已经在dict中,则对应value变为xxx;否则,就新增这一个键值对元素。
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> dict1[3] = 'san'
>>> print(dict1)
{1: 'one', 2: 'two', 3: 'san'}
>>> dict1[4] = 'four'
>>> print(dict1)
{1: 'one', 2: 'two', 3: 'san', 4: 'four'}
第一种是pop(key)
方法,删除key键值对,返回值是对应的value。如果key不存在会报错。
>>> dict1 = {1: 'one', 2: 'two', 3: 'san', 4: 'four'}
>>> k_v = dict1.pop(3)
>>> print(k_v,dict1)
san {1: 'one', 2: 'two', 4: 'four'}
>>> dict1.pop(3)
KeyError: 3
第二种方法是del [dict[key]]
, 删除给定key的元素。如果key不存在也会报错。
>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> del dict1[3]
>>> print(dict1)
{1: 'one', 2: 'two'}
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像,与dict唯一的区别就是不存储value。创建 set 的方式是调用 set()
并传入一个 list,list的元素将作为set的元素:
>>> list1 = [1, 1, 2.0, '3']
>>> set1 = set(list1)
>>> print(type(set1))
<class 'set'>
>>> print(set1) #自动去重
{1, 2.0, '3'}
由于set存储的是无序集合,所以我们没法通过索引来访问。但可以用in
语法来判断某个元素是否在set中。
>>> list1 = [1, 1, 2.0, '3']
>>> set1 = set(list1)
>>> '3' in set1
True
>>> '1' in set1
False
not in
用法一样,也可以用在list和dict中。
增加新元素,用add()
方法:
>>> list1 = [1, 1, 2.0, '3']
>>> set1 = set(list1)
>>> set1.add('one')
>>> set1.add(1) #若元素已经在set中,不会被加进去
>>> print(set1)
{1, 2.0, 'one', '3'}
删除元素,用remove()
方法,用之前要判断元素是否存在set中:
>>> list1 = [1, 1, 2.0, '3']
>>> set1 = set(list1)
>>> set1.remove(1)
>>> print(set1)
{2.0, '3'}
>>> set1.remove(1) #删除不存在元素,会报错
KeyError: 1
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )
替代了[ ]
。
>>> tuple1 = (1, 1, 2.0, '3')
>>> print(type(tuple1),tuple1)
<class 'tuple'> (1, 1, 2.0, '3')
由于tuple一旦创建不可修改,它没有 append()方法,也没有insert()和pop()方法。
获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素,不然会报错。
>>> tuple1 = (1, 1, 2.0, '3')
>>> tuple1[0] = 0
TypeError: 'tuple' object does not support item assignment
注意:如果要创建单元素tuple如(1,)
,元素后的','
不能漏掉,不然会被Python解释器优先解释为是元素 1 ,加了','
可以避免歧义。
用法:type(【查询的内容】),如:
>>> print(type('hello,world'))
<class 'str'> #字符串类型
>>> print(type(3))
<class 'int'> #整型
类型转换函数 | 说明 | 注及示例 |
---|---|---|
str() | 将其他数据类型转成字符串 | 注:也可以用引号转换str(7) ,把整形7转换为字符串 |
int() | 将其他数据类型转成整数 | 注:1.文字和小数类字符串,无法转化成整数 2.浮点数转化成整数:去掉小数取整 num = int(7.7) ,num为7 |
float() | 将其他数据类型转成浮点数 | 注:文字类型字符串无法转成浮点数num = float(1) ,打印num结果为1.0num = float('7.7') ,打印num结果为7.7 |
看名字就知道用来干嘛,input()
函数可以接收在终端输入的数据,返回类型为字符串,可将函数结果赋值。input('提示信息:')
可以给输入者以输入的提示信息。用法示例:
>>> x = input()
>? 1.0
>>> print(x)
1.0
>>> print(type(x)) #返回类型为字符串类型
<class 'str'>
>>> x = input('请输入:')
请输入:
>? python
>>> print(x)
python
————————每个人都在抱怨生活不易,可是都在默默为生活打拼————————