[TOC]
# 输入和输出
python2版本中有`raw_input()`
* raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
* raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中
* raw_input()会把用户输入的任何值都作为字符串来对待
python3版本中
没有`raw_input()`函数,只有input()
并且python3中的input与python2中的`raw_input()`功能一样
input是输入,print是输出
~~~
name = input('please enter your name: ')
print('hello,', name)
~~~
# 字符串
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用`r''`表示`''`内部的字符串默认不转义
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用`'''...'''`的格式表示多行内容
**py字符串还支持下标**
当输入完`结束符'''和括号)`
如果写成程序并存为.py文件,就是:
~~~
print('''line1
line2
line3''')
~~~
多行字符串`'''...'''`还可以在前面加上r使用
~~~
print(r'''hello,\n
world''')
~~~
**加r和不加`r`是有区别的**
**加r的话`\n`这些就会被转义**
## 常用方法
### 判断类型
| 方法 | 说明 |
| --- | --- |
| string.isspace() | 如果 string 中**只**包含空格,则返回 True |
| string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
| string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True |
| string.isdecimal() | 如果 string 只包含数字则返回 True,`全角数字` |
| string.isdigit() | 如果 string 只包含数字则返回 True,`全角数字`、`⑴`、`\u00b2` |
| string.isnumeric() | 如果 string 只包含数字则返回 True,`全角数字`,`汉字数字` |
| string.istitle() | 如果 string 是标题化的(每个单词的首字母大写)则返回 True |
| string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True |
| string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True |
### 查找和替换
| 方法 | 说明 |
| --- | --- |
| string.startswith(str) | 检查字符串是否是以 str 开头,是则返回 True |
| string.endswith(str) | 检查字符串是否是以 str 结束,是则返回 True |
| string.find(str, start=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 `-1` |
| string.rfind(str, start=0, end=len(string)) | 类似于 find(),不过是从右边开始查找 |
| string.index(str, start=0, end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 |
| string.rindex(str, start=0, end=len(string)) | 类似于 index(),不过是从右边开始 |
| string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次,返回新字符串,不会修改原字符串 |
### 大小写转换
| 方法 | 说明 |
| --- | --- |
| string.capitalize() | 把字符串的第一个字符大写 |
| string.title() | 把字符串的每个单词首字母大写 |
| string.lower() | 转换 string 中所有大写字符为小写 |
| string.upper() | 转换 string 中的小写字母为大写 |
| string.swapcase() | 翻转 string 中的大小写 |
### 文本对齐
| 方法 | 说明 |
| --- | --- |
| string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
| string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
| string.center(width) | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 |
### 去除空白字符
| 方法 | 说明 |
| --- | --- |
| string.lstrip() | 截掉 string 左边(开始)的空白字符 |
| string.rstrip() | 截掉 string 右边(末尾)的空白字符 |
| string.strip() | 截掉 string 左右两边的空白字符 |
### 拆分和连接
| 方法 | 说明 |
| --- | --- |
| string.partition(str) | 把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面) |
| string.rpartition(str) | 类似于 partition() 方法,不过是从右边开始查找 |
| string.split(str="", num) | 以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 '\r', '\t', '\n' 和空格 |
| string.splitlines() | 按照行('\r', '\n', '\r\n')分隔,返回一个包含各行作为元素的列表 |
| string.join(seq) | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
## 字符串转换为列表
~~~
a = '1,2,3'
split = a.split(',')
print(split) # ['1', '2', '3']
~~~
## 索引
可以用字符串后面跟下标的方式来进行索引,而下标从0开始,至字符串的 len-1 格式为:str[index],如下:
~~~
s = 'fuyong'
print(s[0]) #结果为 F
print(s[3]) #结果为 o
~~~
## 字符串的切片
可以用字符串后面跟‘’下标:下标‘:步长’的方式来对字符串进行切片,格式为 `str[index1:index2:step]`,如下:
~~~
s = 'fuyong'
print(s[0:4]) #结果为fuyo 0 是指从第一个开始切,而 4 代表从索引值为3 (即第四个字母)的地方结束,步长不写的话默认为1,即连续切
print(s[:4]) #结果为fuyo 如果第一个索引值不写,默认从最开始的地方切
print(s[1:]) #结果为uyong 如果第二个索引值不写,默认从第一个索引值对应的字符开始一直切到末尾
print(s[:]) #结果为fuyong 如果两个索引值都不写,默认从开始到末尾
print(s[3:-1]) #结果为 n 第二个索引值为-1的话即表示最后一个字符,也就是说切分从第五个值开始到最o后一个字符之前的一个数
print(s[0:4:2]) #结果为fy 最后一个2代表步长为2,即从 0-4 的之间每隔一个切一个
print(s[4:0:-1]) #结果为noyu 步长为-1 代表倒着数,此时第一个索引值一定要比第二个索引值大。注意:此时是取到第二个索引值对应的字符的前一位
print(s[4:0:-2]) #结果为ny,步长为-2,代表倒着数,每隔1个取一个进行切
~~~
## 字符串的方法
**注意:与列表不同,对字符串操作的所有方法是生成一个新的字符串,而不是直接修改原有的字符串!!!**
### capitalize() 方法
此方法是用于将字符串的首字母转为大写,如下:
~~~
s = 'fuyong'
print(s.capitalize()) #结果为 Fuyong
~~~
### title()方法
此方法的作用是将用空格、数字以及其他符号分开的单词或者其他字符串的首字母变成大写,如下:
~~~
print('fu yong'.title()) #结果为 Fu Yong
print('fu*yong'.title()) #结果为 Fu*Yong
print('fu3yong'.title()) #结果为 Fu3Yong
print('fu%#yong'.title()) #结果为 Fu%#Yong
~~~
### swapcase()方法
此方法是用于将字符串的大小写翻转,如下:
~~~
print('fuyong'.swapcase()) #结果为FUYONG
print('FuYong'.swapcase()) #结果为fUyONG
~~~
### upper() 方法和 lower()方法
这两种方法的作用是将字符串全部转换为大写(upper)或小写(lower),>如下:
~~~
print('fuyong'.upper()) #结果为FUYONG
print('Fu Yong'.lower()) #结果为fu yong
~~~
### startswith()和endswith()方法:
这两中方法是用来判断字符串以什么开头或者结尾,用法如下:
~~~
print('fuyong'.startswith('fu')) #结果为True
print('fuyong'.endswith('g')) #结果为True
~~~
### strip() 、lstrip()、rstrip()方法
这三种方法的作用是删除左右两边的空格或者其他符号,可以指定只删除左边的或者只删除右边的,如下:
~~~
s1 = ' fuyong '
print(s1.strip()) # 结果为‘fuyong# ’ 默认是将字符串两边的空格全部去掉
s2 = '***fuyong**'
print(s2.strip('*')) #结果为‘fuyong’ 可以指定删除的内容
print(s2.lstrip('*')) #结果为‘fuyong**’ 可以指定只删除左边的* 默认是删除左边 空格
print(s2.rstrip('*')) #结果为‘***fuyong’可以指定只删除右边的* 默认是删除右边 空格
~~~
### replace()方法
此方法是用来将字符串里的某些字符替换为新的字符,默认替换范围为整个字符串,也可以指定只替换几个。如下:
~~~
print('fu yong'.replace('yong','sir')) #结果为 ‘fu sir’
print('fu yong'.replace(' ',' xiao ')) #结果为 ‘fu xiao yong’ 参数对于空格同样适用
print('abacad'.replace('a','x',1)) #结果为 'xbacad' 只替换第一个
~~~
### split()方法
此方法用于将一串字符串按要求进行分割,然后将分割结果返回存进一个列表中,默认以空格分割、且范围为整个字符串,也可以指定以第几个符号分割,如下:
~~~
1 print('fu yong'.split()) #结果为['fu', 'yong']
2 print('fuyong'.split('y')) #结果为['fu', 'ong']
3 print('fu|yong'.split('|')) #结果为['fu', 'yong']
4.print('fu*yong*ok') #结果为['fu', 'yongok'
~~~
### count()方法
此方法用来统计一个指定字符或者一串字符串在一串大字符串种出现的次数,没有的话就返回0如下:
~~~
print('fuyong'.count('fu')) # 结果为 1
print('hello'.count('l')) # 结果为 2
print('world'.count('f')) # 结果为 0
~~~
### find()方法
此方法用来查询一个指定字符或者一串字符串在一大串字符串中出现的位置索引,没有的话返回-1
~~~
print('fuyong'.find('u')) #结果为 1
print('fuyong'.find('yon')) #结果为 2
print('fuyong'.find('x')) #结果为 -1
~~~
### index()方法
与find()方法类似,此方法用来查询一个指定字符或者一串字符串在一大串字符串中出现的位置索引,只是,如果搜索不到的话会报错
~~~
print('fuyong'.index('u')) #结果为 1
print('fuyong'.index('yon')) #结果为 2
print('fuyong'.index('x')) #这个找不到,会报错 ValueError: substring not found
~~~
### format()方法
此方法主要用于格式化输出,实例如下:
~~~
#第一种用法,{ } 里均为空,str.format()括号里的值跟str里{}一一对应
s1 = '{},欢迎您!现在是北京时间{}点,这里是{}的空间,点击查看{}的博客'
m1 = s1.format('yonghu',18,'fuyong','fuyong')
print(m1)
#第二种用法,{ }里可以写上索引值,会根据索引来索取str.format() 里的值,可以重复索取
s2 = '{0},欢迎您!现在是北京时间{1}点,这里是{2}的空间,点击查看{2}的博客'
m2 = s2.format('yonghu',18,'fuyong')
print(m2)
#第三种用法,{ }里写上健值,会根据健值来索取str.format()里的值,可以重复索取
s3 = '{user},欢迎您!现在是北京时间{time}点,这里是{name}的空间,点击查看{name}的博客'
m3 = s3.format(user = 'yonghu',time = 18,name = 'fuyong')
print(m3)
#输出结果均为: yonghu,欢迎您!现在是北京时间18点,这里是fuyong的空间,点击查看fuyong的博客
~~~
### center()方法
此方法主要用来让一段字符串居中显示,并且两边可以填充内容以及指定总内容的长度,如下:
~~~
print('info'.center(30,'*'))
print('fuyong'.center(30,'-'))
print('29'.center(30,'-'))
print('end'.center(30,'*'))
输出结果为:
*************info*************
------------fuyong------------
--------------29--------------
*************end**************
~~~
### isalnum()、isalpha()、isdigit()方法
这三种方法用来判断一个字符串是否全部是字母或者数字组成、是否全部为字母组成,是否全部为数字组成
主要用来判断用户输入的东西,实例如下:
~~~
while True:
name = input('请输入您要注册的用户名(只能由字母组成):')
password = input('请输入您的注册密码(只能由字母和数字组成)')
phonenum = input('请输入您的电话号码(只能由数字组成)')
if name.isalpha() and password.isalnum() and phonenum.isdigit():
break
else:
print('输入的格式有误,请重新输入')
~~~
### extandtabs()方法
此方法默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。如下:
~~~
user1 = 'fuyong\thenan'
user2 = 'lixiang\tzhejiang'
user3 = 'zhangsan\theilongjiang'
print(user1.expandtabs())
print(user2.expandtabs())
print(user3.expandtabs())
输出内容为:
fuyong henan
lixiang zhejiang
zhangsan heilongjiang
~~~
### len():
计算一个字符串的长度
~~~
print(len('fuyong')) #结果为6
print(len('fuyong123')) #结果为9
~~~
### jion()
用指定字符串进行拼接
~~~
s = 'fuyong'
print('*'.join(s)) # 结果:f*u*y*o*n*g
print(' '.join(s)) # 结果:f u y o n g
print('__'.join(s)) # 结果:f__u__y__o__n__g
~~~
- python入门
- 软件安装
- anaconda使用
- py解释器
- 数据类型和变量
- 编码
- 字符串
- 格式化
- 数据类型
- 运算符
- list和tuple
- 列表生成式
- dict和set
- 切片和迭代
- set,list,tuple之间互换
- is和==
- 公共方法
- 反射操作
- 数学运算
- 类型转换
- 对象操作
- 序列操作
- 运算符
- 内置函数
- 交互操作
- 编译执行
- 引用
- 判断,循环
- 生成器
- 迭代器
- 函数
- 数据类型转换
- 空函数
- 参数
- 全局变量
- 返回值
- 递归
- 匿名函数
- 文件操作
- 打开和关闭
- 读写
- 备份文件
- 文件定位读写
- 重命名,删除
- 文件夹相关操作
- with
- StringIO和BytesIO
- 操作文件和目录
- 序列化
- 文件属性
- 面向对象
- 类和对象
- init()方法
- 魔法方法
- 继承
- 重写
- 多态
- 类属性,实例属性
- 静态方法和类方法
- 工厂模式
- 单例模式
- 异常
- 私有化
- 获取对象信息
- *args和**kwargs
- property属性
- 元类
- slots
- 定制类
- 枚举
- 模块
- 模块介绍
- 模块中的__name__
- 模块中的__all__
- 包
- 模块发布
- 模块的安装和使用
- 多模块开发
- 标准库
- 给程序传参数
- 时间
- 正则表达式
- GIL
- 深拷贝和浅拷贝
- 单元测试
- pyqt
- 安装
- 设置窗口图标和移动窗口
- 设置气泡提示和文本
- 图片展示
- 文本框控件
- 按钮控件
- 信号和槽
- 布局
- 对话框控件
- pygame
- 窗体关闭事件
- 显示图片
- 移动图片
- 文本显示
- 背景音和音效
- FPS计算
- surface
- 鼠标事件
- 函数式编程
- map/reduce
- filter
- sorted
- 返回函数
- 装饰器
- 偏函数
- 网络编程
- tcp
- udp
- socket
- epoll
- WSGI
- 多任务
- 多线程
- 多进程
- 分布式进程
- 协程
- 迭代器
- 生成器
- yield多任务
- greenlet
- gevent
- ThreadLocal
- asyncio
- async/await
- aiohttp
- 常用内建模块
- datetime
- collections
- base64
- struct
- hashlib
- hmac
- itertools
- urllib
- xml
- HTMLParser
- 常用第三方模块
- pillow
- requests
- chardet
- psutil
- 图形界面
- 海龟绘图
- Django
- 虚拟环境搭建
- ORM
- 模型类设计和表生成
- 模型类操作
- 关系查询
- 后台管理
- 配置mysql
- 字段属性和选项
- 查询
- 模型关联
- 路由
- 模板
- selenium
- 基本原理
- api
- 八种定位方式
- 元素的操作
- 多标签
- 多表单
- 鼠标,键盘
- 警告框
- 下拉框
- 执行js
- 等待
- cookie
- 封装
- unittest模块
- 断言
- 测试用例
- jmeter
- jmeter简介
- jmeter提取json
- 添加header和cookie
- 读取csv/txt文件
- 配置文件
- ant