Python基础知识(二)

上一节简单介绍了python的几种数据类型,关于数值(数字)类相对比较简单,现在继续介绍等下的几种比较重要的数据类型.
image.png

讲字符串之前,简单介绍一下关于python3的编码问题.

一. 什么是编码
将明文转换为计算机可以识别的的编码文本称为“编码”, 反之从计算机可识别的编码文本转回明文为“解码”

  1. ASCII

    计算机上的数据都是以二进制的形式存储的,1个字节(8比特)可以表示256种状态,英文只有26个字符,再加上一些特殊字符,使用128个就够了,计算机就可以使用127个不同字节来存储英语文字,这就是ASCII编码

  2. GB2312

    计算机进入中国后,无法显示中文,一个自己已经被占满了,我国重新制定了一个编码表,将扩展的第八位对应的拉丁文全部删掉,规定一个小于127的字符与原来的意义相同,当两个大于127的字符链接在一起的时候,就表示一个汉字,前面一个字节为高字节(0xA1-0xF7),后面一个字节为低字节(0xA1-0xFE),这样可以表示7000多个汉字,这种编码叫做GB2312。GB2312是对ASCII的中文扩展

  3. GBK和GB18030

    由于汉字的数量太大,GB2312不能满足需求,后来规定只要第一个字节大于127就固定表示一个汉字,不管后面的是不是扩展字符集里面的内容,扩展后的编码成为GBK, GBK包括了GB2312的所有内容,同时增加了近20000个新的汉字(包括繁体)和符号

  4. Unicode

    在Unicode出现之前,每个国家都搞自己的编码,彼此之间互不支持,带来很多麻烦,国际标标准组织提出来一个统一的编码标准:Unicode

Unicode用两个字符来表示一个字符,可以提供65535种字符,足够覆盖世界上的所有符号

  1. utf-8

    Unicode的出现,提供了统一的标准,但对于英文世界的国家来说,一个字节完全够用,如果使用Unicode会浪费大量空间,为了解决这个问题提出了utf-8,一种针对Unicode的可变长度字符编码,可以使用1-4个字节表示一个符号,根据不同的符号变化字节长度,当字符在ASCII编码范围时,用一个字节表示,兼用ASCII。

使用这样的编码的好处是,虽然内存汇总的数据都是Unicode,但当数据保存到磁盘或者用于网络传输时,使用utf-8会节省更多的流量和硬盘空间。

Unicode和utf-8的关系:Unicode是内存编码表示方案(规范),而utf-8是如何保存和传输Unicode的方案(实现)

然后python3的python2的区别就是全面兼容Unicode,已经不用担心中文编码问题


  1. 字符串

  • 如下定义的变量a,存储的是数字类型的值
    a = 100
    如下定义的变量b,存储的是字符串类型的值

    字符串输出

      b = "hello www.wolfcode.cn"
      或者
      b = 'hello www.wolfcode.cn'
    

    双引号或者单引号中的数据,就是字符串

  • 字符串输入

    input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

      userName = input('请输入用户名:')
      print("用户名为:%s"%userName)
    
      password = input('请输入密码:')
      print("密码为:%s"%password)
    

    结果:(根据输入的不同结果也不同)

      请输入用户名:wolfcode
      用户名为: wolfcode
      请输入密码:kuailedabenyingtiantianhaoxinqing
      密码为: kuailedabenyingtiantianhaoxinqing
    
  • 字符串的下标

    所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
    如果想取出部分字符,那么可以通过下标的方法.
    w o l f c o d e
    0 1 2 3 4 5 6 7
    ```python
    In [1]: str1 = “wolfcode”

In [2]: str1[0]
Out[2]: ‘w’

In [3]: str1[1]
Out[3]: ‘o’

In [4]: str1[3]
Out[4]: ‘f’

- ##字符串的切片

切片是指对操作的对象截取其中一部分的操作。**字符串、列表、元组**都支持切片操作。

>切片的语法:[起始:结束:步长]

**注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。**

我们以字符串为例讲解。

如果取出一部分,则可以在中括号[]中,使用:
 name = 'abcdef'

 print(name[0:3]) # 取 下标0~2 的字符
![image.png](https://upload-images.jianshu.io/upload_images/4151356-e50675bc982fbb1c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 name = 'abcdef'

 print(name[0:5]) # 取 下标为0~4 的字符

![image.png](https://upload-images.jianshu.io/upload_images/4151356-8e240c51e72c490c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 name = 'abcdef'

 print(name[3:5]) # 取 下标为3、4 的字符

![image.png](https://upload-images.jianshu.io/upload_images/4151356-d3c9c2fda520a611.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 name = 'abcdef'

 print(name[2:]) # 取 下标为2开始到最后的字符

![image.png](https://upload-images.jianshu.io/upload_images/4151356-ee988d35a5758742.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 name = 'abcdef'

 print(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符

![image.png](https://upload-images.jianshu.io/upload_images/4151356-d0c27f98fbb14d82.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

a = “abcdef”
a[:3]
‘abc’
a[::2]
‘ace’
a[5:1:2]
‘’
a[1:5:2]
‘bd’
a[::-2]
‘fdb’
a[5:1:-2]
‘fd’

- 字符串常见操作
1. find(str) :检测str是否包含在mystr中,是返回开始的索引值,否返回-1;

完整结构:mystr.find(str,start = 0, end=len(mystr))  str代表搜索的字符,start代表搜索的起>始位置,end代表搜索的结束位置(请注意不是长度,是下标)

mystr = ‘hello world python wocast I and you wocastcpp’
print(mystr.find(‘wo’))#display 19, return 从左至右第一次出现的字符的下标
print(mystr.find(“wo”, 22,200))#display 36
print(mystr.find(“wo”, 22,24))#display -1 在指定范围内没有找到字符串则返回-1

2. index()

跟find()方法一样,只是如果str不在会报一个异常

3. rfind()和find()类似,只是从右边开始找

4. rindex()方法和index()方法类似,只是从右边开始找

5. count(str):返回str出现的次数

完整结构: mystr.count(str,start = 0, end=len(mystr))  返回str在star和end之间出现的次数

mystr = ‘hello world python wocast I and you wocastcpp’
print(mystr.count(‘it’))#display 2

6. mystr.replace(str1,str2, mystr.count(str1))  把mystr中的str1替换成str2,如果count指定,则替换不超过count次

mystr = ‘hello world python wocast I and you wocastcpp’
print(mystr.replace(‘wo’,’WO’)) #”display hello world python WOcast I and you WOcastcpp”
注意:此时只要没有重新给mystr赋值,则mystr并不改变。

7. mystr.split("切割字符",切割几次) 如果切割字符和切割几次不设置,默认以空格切割,切割全部

mystr = ‘hello world python wolfcode I and you wolfcode’
print(mystr.split())#display [‘hello’, ‘world’, ‘python’, ‘wolfcode’, ‘I’, ‘and’, ‘you’, ‘wolfcode’]
print(mystr.split(“o”,2))#display [‘hell’, ‘ w’, ‘rld python wolfcode I and you wolfcode’]

8. capitalize() 把字符串的第一个字符大写

mystr = ‘hello world python’
print(mystr.capitalize())#diplay Hello world python

9. title() 把字符串的每个单词首字母大写

mystr = ‘hello world python’
print(mystr.title())#display Hello World Python

10. lower() 把字符串的每个字符小写

11. upper() 把字符串的每个字符大写

12. startswith(obj) 检查字符串是否以obj开头,是则返回True,否则返回False

mystr = ‘hello world python’
print(mystr.startswith(“hello”))#display True
print(mystr.startswith(“Hello”))#display False
```

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值