if 条件:
# 事情1
else:
# 事情2
当你需要判断的时候. 就去写if.
举例,
在写爬虫的时候. 我们会遇到这样的两种情况
情况一, 数据里有一些我们并不需要的内容
data = "10,英雄本色,1500万" # 正常你需要的数据
data = "11,-,-" # 你不需要的数据
# 伪代码, 理解含义(思路)
if data里有你需要的数据:
处理数据
else:
再见
情况二, 页面结构不统一, 会有两种页面结构
# 伪代码, 理解含义(思路)
提取器1 = xxxx # 用来提取页面中内容的
提取器2 = xxxxxx
# 页面有可能是不规则的。
结果1 = 提取器1.提取(页面)
if 结果1:
有结果. 存起来
else:
没有结果.
结果2 = 提取器2.提取(页面)
while 条件:
循环体
如果条件为真, 就执行循环体, 然后再次判断条件.....直到条件为假. 结束循环.
反复的执行一段代码
True, 是真的意思.
False, 是假的意思.
下面这个, 需要各位去记住
# 几乎所有能表示为空的东西. 都可以认为是False
print(bool(0))
print(bool(""))
print(bool([]))
print(bool({}))
print(bool(set()))
print(bool(tuple()))
print(bool(None))
# 上面这一坨全是False, 相反的. 都是真. 利用这个特性. 我们可以有以下的一些写法
# 伪代码, 理解逻辑.
结果 = 提取器.提取(页面)
if 结果:
有结果. 我要保存结果
else:
没结果.......
索引, 就是第几个字符. 它从0开始.
切片, 从字符串中提取n个字符.
s = "我爱黎明,黎明爱我"
print(s[1])
print(s[0])
print(s[2:4]) 从第2个, 到第4个(取不到4)
我们从网页上提取的数据. 很多都是带有一些杂质的(换行, 空格),怎么去掉?
strip()可以去掉字符串左右两端
的空白(空格, 换行\n, 回车\r, 制表符\t)
s = " \t\t\t我的天哪\r\r \n\n " # 够乱的字符串
s1 = s.strip()
print(s1) # 好了 `我的天哪`
split, 做切割的.
s = "10,男人本色,100000万" # 你在网页上提取到这样的一段数据. 现在我需要电影名称
tmps = s.split(",")
name = tmps[1]
print(name) # 男人本色
id, name, money = s.split(",") # 切割后. 把三个结果直接怼给三个变量
print(id)
print(name)
print(money)
replace, 字符串替换
s = "我 \t\t\n\n爱 黎 明 " # 这是你从网页上拿到的东西
s1 = s.replace(" ", "").replace("\t", "").replace("\n", "") # 干掉空格, \t, \n
print(s1) # 我爱黎明
join, 将列表拼接为一个完整的字符串
lst = ["我妈", "不喜欢", "黎明"] # 有时,由于网页结构的不规则, 导致获取的数据是这样的.
s1 = "".join(lst) # 用空字符串把lst中的每一项拼接起来
print(s1) # 我妈不喜欢黎明
lst2 = ["\n\r","\n\r","周杰伦\n\r", "\n不认识我\r"]
s2 = "".join(lst2).replace("\n", "").replace("\r", "")
print(s2) # 周杰伦不认识我
格式化字符串的一种方案
s = "周杰伦"
s1 = f"我喜欢{s}" # 它会把一个变量塞入一个字符串
print(s1) # 我喜欢周杰伦
k = 10085
s2 = f"我的电话号是{k+1}" # 它会把计算结果赛入一个字符串
print(s2) # 我的电话号是10086
# 综上, f-string的大括号里, 其实是一段表达式.能计算出结果即可
列表的索引和切片逻辑与字符串完全一致
lst = ["赵本山", "王大陆", "大嘴猴", "马后炮"]
item1 = lst[2] # 大嘴猴
item2 = lst[1] # 王大陆
lst2 = lst[2:]
print(lst2) # ["大嘴猴", "马后炮"]
# 注意, 如果列表中没有数据. 取0会报错
lst = []
print(lst[0]) # 报错, Index out of bounds
# 注意, 如果给出的索引下标超过了列表的最大索引. 依然会报错
lst = ["123", "456"]
print(lst[9999]) # 报错, Index out of bounds
给列表添加数据. append
lst = [11,22]
lst.append(33)
lst.append(44)
print(lst) # [11,22,33,44]
删除数据(不常用, 好不容易爬到的数据. 为什么要删)
lst.remove("周润发") # 把周润发删掉
lst = ["赵本山", "王大陆", "大嘴猴", "马后炮"]
lst[1] = "周杰伦"
print(lst) # ["赵本山", "周杰伦", "大嘴猴", "马后炮"]
用for循环数数的一个东西
for i in range(10):
print(i) # 从0数到9
for i in range(5, 10):
print(i) # 从5 数到 9
lst = ["赵本山", "周杰伦", "大嘴猴", "马后炮"]
print(lst[0])
print(lst[1])
print(lst[2])
print(lst[3])
# 循环列表的索引
for i in range(len(lst)):
print(i)
print(lst[i])
# 循环列表的内容
for item in lst:
print(item)
字典可以成对儿的保存数据.
dic = {}
dic['name'] = '张三'
dic['age'] = 18
print(dic) # {"name": "张三", "age": 18}
dic = {"name": "樵夫", "age": 18}
dic['age'] = 19
print(dic) # {"name": "樵夫", "age": 19}
dic = {"name": "樵夫", "age": 18}
dic.pop("age")
print(dic) # {'name': '樵夫'}
dic = {"name": "樵夫", "age": 18}
a = dic['name'] # 查询'name'的值
print(a) # 樵夫
b = dic['age'] # 拿到dic中age对应的值
print(b) # 18
c = dic['哈拉少'] # 没有哈拉少. 报错
d = dic.get("哈拉少") # 没有哈拉少, 不报错. 返回None. 它好. 它不报错
循环
dic = {"name": "樵夫", "age": 18}
for k in dic: # 循环出所有的key
print(k)
print(dic[k]) # 获取到所有的value并打印
嵌套
dic = {
"name": "王峰",
"age": 18,
"wife": {
"name": "章怡",
"age": 19,
},
"children": [
{'name':"胡一菲", "age": 19},
{'name':"胡二菲", "age": 18},
{'name':"胡三菲", "age": 17},
]
}
# 王峰的第二个孩子的名字
print(dic['children'][1]['name'])
# 王峰所有孩子的名称和年龄
for item in dic['children']:
print(item['name'])
print(item['age'])