字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。单引、双引号都可以定义字符串,三引号允许一个字符串跨多行。例如:
var1 = 'Hello World!' var2 = "Python"
1.获取,截取字符串(字符串切片):
mystr = 'hello world'
print(mystr[3]) #获取下标为3的字符 得到结果为l
print(mystr[1:3:1]) #获取下标[1:3]的字符串,不包含3,后面一个参数代表步长
mystr[3,2] #如果前面大于后面,则什么都不输出,因为默认步长为1
mystr[-1:0] #什么也没有
mystr[-1:0:-1] # 固定语法 从后往前取,不包含第一位
mystr[-1::-1] # 想逆序从后取到前
mystr[::-1] #同上
2.字符串的一些用法:
下表实例变量 a 值为字符串 "Hello"
in : 判断是否在这些字符串中存在 | print('H' in a) 输出得到true |
not in :判断是否不在此字符串中 | print('H' not in a) 输出得到false |
r/R : 原样输出字符串,如一些特殊字符串"\n",'\t','\'转译符 | print(r'sd\n') 输出得到sd\n |
3.字符串格式化:
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
以上输出为:
My name is Zara and weight is 21 kg!
%s格式化字符串
%d 格式化整数
%f 浮点数 %.2f表示保留2位浮点数
.format()格式化:
print('{}'.format("hello"))
print('姓名:{name},年龄:{age}'.format(name="张三",age=20))
print('姓名:{0},年龄:{1}'.format("张三",20))
以上输出为:
hello
姓名:张三,年龄:20
姓名:张三,年龄:20
print('aaa{{{}}}'.format(20)) #想输出{}
print('aaa{{0}}'.format()) #想输出{0}
以上输出为:
aaa{20}
aaa{0}
4.类型转换
str(x) 将x转换为字符串类型
print(str(100)==100)
#输出得到false
5.字符串的一些函数:
string.len() 字符串的长度 |
string.count(sub, start= 0,end=len(string)) 返回有几个字符 如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
string.capitalize() 将字符串的第一个字符转换为大写 |
string.title() 将每一个单词首字母大写 |
string.find(str, beg=0, end=len(string)) 从左找字符串,返回找到的字符串的下标 beg=0, end,如果找不到,返回-1 |
string.rfind(str, beg=0, end=len(string)) 从右面开始找 beg-end 指定一个范围 |
string.index() 找存在的下标,如果包含子字符串返回开始的索引值,否则抛出异常。 |
string.rindex(): 从右面开始找 |
string.replace('x','y') 将字符串的'x'替换成'y',但是原字符串不会被改变 |
string.split(str="", num=string.count(str)) 如果split()什么都不写,就是将通过\t和空格进行拆分 num=分割几次 |
string.startswith(str, beg=0,end=len(string)) 判断字符串是否以str开头,beg代表str的下标,默认0,如果是,返回true 否则返回false |
string.endswith() 判断是否以‘’结尾,同上 |
string.lower() 转换 string 中所有大写字符为小写. |
string.upper() 转换 string 中所有小写字符为大写. |
string.ljust(int num,str="") 字符串输出时怎样对齐,括号里写大小 达到一个新的高度 以什么填充 |
string.strip() string,lstrip() string,rstrip() 去左右两端 去左 去右去除空格 不会去除字符串内部的空格 |
string.partition() 以此字符串为节点拆分 ,返回头、分割符、尾3个元组。 |
string.splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果 为 True,则保留换行符。 |
string.isalpha() 判断字符串是否是全是字母/文字(汉字) 非特殊字符(符号)是返回 true 否则false |
string.isdigit() 判断字符串是否是全是数字 是返回 true否则 false |
string.isalnum() 判断字符串是否是数字和字母/文字(汉字) 非特殊字符(符号)是返回 true 否则false |
string.join(sequence) 将列表组成新的字符串 |
string.swapcase() 翻转字符串中的大小写 |
小练习:输入一个邮箱,对其进行合法验证,合法则返回其id
email=input('请输入一个邮箱:')
if email.find('@')!=1 and email.find('.')!=1 and\
email.find('@')<email.find('.') and\
len(email)<30:
print('邮箱格式正确,用户名为:',email[0:email.find('@')])
else:
print('邮箱格式错误')