文章目录
一、字符串
字符串编码
python 3.x默认的字符编码是unicode,默认的文件编码是utf-8。解码格式与编码格式必须相同。在python2文件中,经常在文件开头看到“ #_coding:utf-8 _ ”语句作用是告诉python解释器此.py文件是utf-8编码,需要用utf-8的编码去读取这个.py文件。Python2将string处理为原生的bytes类型,而不是 unicode。而Python3所有的 string均是unicode类型。这意味着,只要用python3.x,无论我们的程序以那种语言开发,都可以在电脑上正常显示。python3.x除了把字符串的编码改成了unicode,还把str和bytes做了明确区分,str就是unicode格式的字符串,而bytes就是单纯的二进制。想在python3.x中看字符串,必须是unicode,其他编码一律是bytes格式。
s='''就这?就这'''
print(type(s))#<class 'str'>
s=s.encode("utf-8")
print(s,'类型',type(s))#b'\xe5\xb0\xb1\xe8\xbf\x99\xef\xbc\x9f\xe5\xb0\xb1\xe8\xbf\x99' 类型 <class 'bytes'>
这里值得注意的是:网页也bytes类型,要想在python中用需要将其进行解码。
class BaiduNetdisk(object):
def __init__(self):
pass
def disabledLinkanalyse(self, link):
"""
链接有效性判断
:param link: baiduNetdisk download Link
:return: 0-False / html-True
"""
try:
print("url", link)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67'
}
req = urllib.request.Request(url=link, headers=headers, method='GET')
response = urllib.request.urlopen(req)
html = response.read()
print(type(html))#bytes
Baidu=BaiduNetdisk()
Baidu.disabledLinkanalyse("https://pan.baidu.com/share/init?surl=h6UP4AuDZZAyosMUgWN_XQ")
编码方式
- ASCII:支持英文ASCII编码是1个字节
- GB2312:一个字节表示英文,两个字节表示中文
- Unicode:Unicode又被称为统一码、万国码;它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。两个字节表示一个字符
- UTF-8:一个字节表示英文,三个字节表示中文和其他语言。
字符串
字符串属于不可变序列类型,其方法都不是对原字符串进行修改。字符串使用单引号、双引号、三单引号或三双引号作为界定符,并且不同的界定符之间可以相互嵌套,但是不允许同一个字符串出现相同的两组界定符,如:
s="Alex say:"Could you say something that make you unhappy to make us
happy?"" --------------error
s='Alex say:"Could you say something that make you unhappy to make us happy?"' --------------True
字符串的驻留机制
对于短字符串,将其赋值给多个不同对象时,内存中只有一个副本,对各对象共享一个副本。对于长字符串不遵守驻留机制。
s='Alex say:"Could you say something that make you unhappy to make us
happy?"'
s1='Alex say:"Could you say something that make you unhappy to make us happy?"'
print(id(s)==id(s1))#True
s3=s*50
s4=s1*50
print(s3==s4)#True
print(s3 is s4)#False
print(id(s3)==id(s4))#False
说明:
- 比较id(s3)==id(s4)和id(s)==id(s1)的结果可以很好的看出驻留机制
- s3 == s4和 s3 is s4的结果可以看出==并不比较地址,而是比较值。
字符串的格式化
详情查看内置函数的使用
re正则介绍
1 “ . ” 通配符代指一个任意字符【不包括\n】
2 “^”添加在规则开头,只匹配字符串开头
3”$”添加在规则末尾,只在末尾匹配
4 “*“重复匹配,表示重复前面字符零到多次、“+“一到多次、”?”零到一次、”{
num }”匹配num次【{
1,}一到正无穷
5 “[ ]”一个匹配范围内的字符,[a-z]匹配a-z的字母;取消原则字符的特殊功能(\^-例外)[*]只代表匹配一个*,[^t1]匹配除t,1之外的元素。
6 “\” 反斜杠后面跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能。如:\d [0-9]、\D[^0-9]、\s匹配任、何空白字符[\t\n\r\f\v]、\w匹配任何字母数字字符[a-zA-z0-9]、\b匹配一个单词和空格间的位置
注:大写均为非
7,[\u4e00-\u9fa5