初识python3.0 (1)字符串
2017-07-27 20:49
190 查看
关于字符串(可读性较低,待我不断完善并整理)
在跟着博客上的博文学习python的过程中发现了一个很有趣的现象,就是进行多行注释的注释符'''和"""都可以用来创建字符串。这不由得让我发出了一个思考,是不是在python中通过将代码化为字符串进而达到注释的作用?(希望有看到这里的大佬能指点一二)
另外的两个字符串标识符' ' 和"" ""则受 1、不能跨行 2、受转义字符的影响
好了,下面介绍python中字符串
1)
*1.关于字符串的创建,字符串可以通过四种无差别的方式创建,这四种方式分别是:
' ' 、"" ""、''' '''、""" """。(其中后两种可以起到注释的作用)
*2.关于转义字符的影响
转义字符的出现确实挺恶心人的,但是能通过原始字符 ‘r/R’ 解决这个问题,原始字符串可以应用在创建变量时和输出时。
但是有一种情况是原始字符串不能解决的,就是当创建字符串变量时句中的转义字符和字符串标识符一致时。
例:line = r'hi, I'm the killer that kill you.'(错误的, 句中的转义字符和字符串创建时的标识符一致,系统自动将转义字符前的子串判定为字符串,后面为非法存在)
正确解决方法是:要不然换一种字符串标识符,要不在句中转义符前加上'\'
2)几个特性
*1.python中不存在单个字符一说,无论单个字符还是多个字符的集合,都是一个字符串。
*2.python能够通过中括号[]进行对字符串中的字符进行查看,可以看单个位置上的也可以看字符串中的一段。
*3.python中的字符串可通过索引进行查看或处理
例子:line = 'I have a pet cat.'
line = line[:13] + 'r' + line[14:]
输出:I have a pet rat.
当使用索引时需要注意[x:y]索引所截取的字符串是从该字符串第x个位置到该字符串第y-1个位置对应的字符串。
其中索引也充分解决了索引是负数、索引大于字符串长度、索引缺省等问题。
*(1)当索引的下标是负数时,从右向左数。
例:word = "HELPA"
word[-1] => 'A'//倒数一个字符
word[-2:] => 'PA'//从倒数第二个字符到最后一个字符
word[:-2] => 'HEL'//从倒数一个字符到最开始那个字符
*(2)当索引的下标缺省时
例:word[:3] => 'HEL'//从第一个字符到第二个字符(3-1=2)
word[3:] => 'PA'//从第三个字符到最后一个字符
*(3)当索引的下标大于字符串长度时,过大的坐标被换为字符串长度
例:word[1:100] => 'ELPA'
*(4)当索引下标上界小于下界时,输出空串
例:word[2:1] = ''
*4.可以通过len()函数查看字符串长度
(3).在python中基本数据类型比如数字和字符串都不能改变
想要改变字符串只能通过操作将其拼接而得到字符串(相当于生成新的字符串)
例如:line = 'I have a pet cat.'
line = line[:13] + 'r' + line[14:]
>>'I have a pet rat.'
(4).关于一些字符串的操作符
*1. 两字符串相连:+
例:line1 = 'hi'
line2 = ' i am killer-d'
print(line1 + line2)
>>hi i am kill-d
*2. 重复输出某个字符串:*
line1 = 'hi'
print(hi * 2)
>>hihi
*3.子串判断符(in/ not in)
line = 'Hello'
if ('H' in line) :
or: if('H' not in line):
*4.原始字符串符:r / R
原始字符串,即不受串中转义字符的影响直接输出串中字符, 但是要注意这只能在print时用,在创建变量时不能用。
print(r'Hi, I'm the killer that kill you, motherfucker!')
>>Hi, I'm the killer that kill you, motherfucker!
(5)关于Python中字符串输出的格式化
基本理念就是,将一个值插入到一个有字符格式符%s的字符串中
基本格式:
print("我叫 %s ,我今年 %d 了" % (name, ages))//在字符串中加字符串格式化符号,在字符串后加%以提示后面存在格式化的数据变量的存在
字符串格式化符号主要以下几种:
%c 格式化字符
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整形数字
%o 格式化无符号八进制数
%x 格式化无符号十六进制数字
%X 格式化无符号十六进制数字(英文字符大写)
%f 格式化浮点数字,可指定小数点后的精度
%p 用十六进制数字格式化浮点数字
%g/%G %f和%e的综合
%e/%E 用科学技术法格式化浮点数
字符串格式化的辅助符号
* 定义宽度或者小数点精度
- 用于左对齐
+ 在正数前显示加号
# 在八进制数前显示0,在十六进制数前显示"0X"或"0x"(取决于用x还是X)
0 在显示的数字前面填充0而不是空格
(var) 用来映射变量(通常用来处理字段类型的参数)
m.n m是显示的最小总宽度,n是小数点后的位数
例:
num = 100
print "%d to hex is %x" %(num, num)
print "%d to hex is %X" %(num, num)
print "%d to hex is %#x" %(num, num)
print "%d to hex is %#X" %(num, num)
# 浮点数
f = 3.1415926
print "value of f is: %.4f" %f
# 指定宽度和对齐
students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]//建立了一个功能类似于map但功能更灵活的数组
print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])
print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])
print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])
全部小写:str.lower()
大小写互换:str.swapcase()
首字母大写,其余小写:str.capitalize()
首字母大写:str.title()
获取固定长度,左对齐,右边不够用空格补齐:str.ljust(width)
获取固定长度,中间对齐,两边不够用空格补齐:str.ljust(width)
获取固定长度,右对齐,左边不足用0补齐
python字符串查找指定多个子字符串的所有位置:
a = "dhvka,feovj.dlfida?dfka.dlviaj,dlvjaoid,vjaoj?"
b = [i for i, j in enumerate(a) if j in [',', '.', '?']]
print(b)
[5, 11, 18, 23, 30, 39, 45]
指定起始位置搜索:str.find('t',start)
指定起始及结束位置搜索:str.find('t',start,end)
从右边开始查找:str.rfind('t')
搜索到多少个指定字符串:str.count('t')
上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
2. if "abc" in 'abcde'
3.'abcde'.find('bcd') >= 0
4.'abcde'.count('bcd') > 0
5.try:
string.index(ls,ss)
print 'find it'
except(ValueError):
print 'fail'
替换指定次数的old为new:str.replace('old','new',maxReplaceTimes)
print '%s replace t to *=%s' % (str,str.replace('t', '*'))
print '%s replace t to *=%s' % (str,str.replace('t', '*',1))
methon1: tags = re.sub("
|
|'", "", str(music_tag[music_name]))
methon3: [一次完成多个字符串的替换]
去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串(支持正则):s.strip('{|}')
按指定字符分割字符串为数组:str.split(' ')
默认按空格分隔
指定分隔符str,str.split('-')
是否以end结尾:str.endswith('end')
是否全为字母或数字:str.isalnum()
是否全字母:str.isalpha()
是否全数字:str.isdigit()
是否全小写:str.islower()
是否全大写:str.isupper()
str='python String function'
在跟着博客上的博文学习python的过程中发现了一个很有趣的现象,就是进行多行注释的注释符'''和"""都可以用来创建字符串。这不由得让我发出了一个思考,是不是在python中通过将代码化为字符串进而达到注释的作用?(希望有看到这里的大佬能指点一二)
另外的两个字符串标识符' ' 和"" ""则受 1、不能跨行 2、受转义字符的影响
好了,下面介绍python中字符串
1)
*1.关于字符串的创建,字符串可以通过四种无差别的方式创建,这四种方式分别是:
' ' 、"" ""、''' '''、""" """。(其中后两种可以起到注释的作用)
*2.关于转义字符的影响
转义字符的出现确实挺恶心人的,但是能通过原始字符 ‘r/R’ 解决这个问题,原始字符串可以应用在创建变量时和输出时。
但是有一种情况是原始字符串不能解决的,就是当创建字符串变量时句中的转义字符和字符串标识符一致时。
例:line = r'hi, I'm the killer that kill you.'(错误的, 句中的转义字符和字符串创建时的标识符一致,系统自动将转义字符前的子串判定为字符串,后面为非法存在)
正确解决方法是:要不然换一种字符串标识符,要不在句中转义符前加上'\'
2)几个特性
*1.python中不存在单个字符一说,无论单个字符还是多个字符的集合,都是一个字符串。
*2.python能够通过中括号[]进行对字符串中的字符进行查看,可以看单个位置上的也可以看字符串中的一段。
*3.python中的字符串可通过索引进行查看或处理
例子:line = 'I have a pet cat.'
line = line[:13] + 'r' + line[14:]
输出:I have a pet rat.
当使用索引时需要注意[x:y]索引所截取的字符串是从该字符串第x个位置到该字符串第y-1个位置对应的字符串。
其中索引也充分解决了索引是负数、索引大于字符串长度、索引缺省等问题。
*(1)当索引的下标是负数时,从右向左数。
例:word = "HELPA"
word[-1] => 'A'//倒数一个字符
word[-2:] => 'PA'//从倒数第二个字符到最后一个字符
word[:-2] => 'HEL'//从倒数一个字符到最开始那个字符
*(2)当索引的下标缺省时
例:word[:3] => 'HEL'//从第一个字符到第二个字符(3-1=2)
word[3:] => 'PA'//从第三个字符到最后一个字符
*(3)当索引的下标大于字符串长度时,过大的坐标被换为字符串长度
例:word[1:100] => 'ELPA'
*(4)当索引下标上界小于下界时,输出空串
例:word[2:1] = ''
*4.可以通过len()函数查看字符串长度
>>> s = 'supercalifragilisticexpialidocious' >>> len(s)
>>> 34
(3).在python中基本数据类型比如数字和字符串都不能改变
想要改变字符串只能通过操作将其拼接而得到字符串(相当于生成新的字符串)
例如:line = 'I have a pet cat.'
line = line[:13] + 'r' + line[14:]
>>'I have a pet rat.'
(4).关于一些字符串的操作符
*1. 两字符串相连:+
例:line1 = 'hi'
line2 = ' i am killer-d'
print(line1 + line2)
>>hi i am kill-d
*2. 重复输出某个字符串:*
line1 = 'hi'
print(hi * 2)
>>hihi
*3.子串判断符(in/ not in)
line = 'Hello'
if ('H' in line) :
or: if('H' not in line):
*4.原始字符串符:r / R
原始字符串,即不受串中转义字符的影响直接输出串中字符, 但是要注意这只能在print时用,在创建变量时不能用。
print(r'Hi, I'm the killer that kill you, motherfucker!')
>>Hi, I'm the killer that kill you, motherfucker!
(5)关于Python中字符串输出的格式化
基本理念就是,将一个值插入到一个有字符格式符%s的字符串中
基本格式:
print("我叫 %s ,我今年 %d 了" % (name, ages))//在字符串中加字符串格式化符号,在字符串后加%以提示后面存在格式化的数据变量的存在
字符串格式化符号主要以下几种:
%c 格式化字符
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整形数字
%o 格式化无符号八进制数
%x 格式化无符号十六进制数字
%X 格式化无符号十六进制数字(英文字符大写)
%f 格式化浮点数字,可指定小数点后的精度
%p 用十六进制数字格式化浮点数字
%g/%G %f和%e的综合
%e/%E 用科学技术法格式化浮点数
字符串格式化的辅助符号
* 定义宽度或者小数点精度
- 用于左对齐
+ 在正数前显示加号
# 在八进制数前显示0,在十六进制数前显示"0X"或"0x"(取决于用x还是X)
0 在显示的数字前面填充0而不是空格
(var) 用来映射变量(通常用来处理字段类型的参数)
m.n m是显示的最小总宽度,n是小数点后的位数
例:
num = 100
print "%d to hex is %x" %(num, num)
print "%d to hex is %X" %(num, num)
print "%d to hex is %#x" %(num, num)
print "%d to hex is %#X" %(num, num)
# 浮点数
f = 3.1415926
print "value of f is: %.4f" %f
# 指定宽度和对齐
students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]//建立了一个功能类似于map但功能更灵活的数组
print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])
print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])
print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])
Python内置的字符串处理函数
python字符串子串
python没有substring函数,因为直接使用str[start:end]就可以啦。字母处理
全部大写:str.upper()全部小写:str.lower()
大小写互换:str.swapcase()
首字母大写,其余小写:str.capitalize()
首字母大写:str.title()
格式化相关
获取固定长度,右对齐,左边不够用空格补齐:str.ljust(width)获取固定长度,左对齐,右边不够用空格补齐:str.ljust(width)
获取固定长度,中间对齐,两边不够用空格补齐:str.ljust(width)
获取固定长度,右对齐,左边不足用0补齐
字符串搜索相关
搜索指定字符串,没有返回-1:str.find('t')python字符串查找指定多个子字符串的所有位置:
a = "dhvka,feovj.dlfida?dfka.dlviaj,dlvjaoid,vjaoj?"
b = [i for i, j in enumerate(a) if j in [',', '.', '?']]
print(b)
[5, 11, 18, 23, 30, 39, 45]
指定起始位置搜索:str.find('t',start)
指定起始及结束位置搜索:str.find('t',start,end)
从右边开始查找:str.rfind('t')
搜索到多少个指定字符串:str.count('t')
上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
python判断字符串是否包含子串的方法
1. if 'abcde'.__contains__("abc")2. if "abc" in 'abcde'
3.'abcde'.find('bcd') >= 0
4.'abcde'.count('bcd') > 0
5.try:
string.index(ls,ss)
print 'find it'
except(ValueError):
print 'fail'
字符串替换相关
替换old为new:str.replace('old','new')替换指定次数的old为new:str.replace('old','new',maxReplaceTimes)
print '%s replace t to *=%s' % (str,str.replace('t', '*'))
print '%s replace t to *=%s' % (str,str.replace('t', '*',1))
字符串一次替换多个不同字符
将字符串中的[ ] '替换成空格methon1: tags = re.sub("
|
|'", "", str(music_tag[music_name]))
methon3: [一次完成多个字符串的替换]
字符串去空格及去指定字符
去两边空格:str.strip()去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串(支持正则):s.strip('{|}')
按指定字符分割字符串为数组:str.split(' ')
默认按空格分隔
指定分隔符str,str.split('-')
字符串判断相关
是否以start开头:str.startswith('start')是否以end结尾:str.endswith('end')
是否全为字母或数字:str.isalnum()
是否全字母:str.isalpha()
是否全数字:str.isdigit()
是否全小写:str.islower()
是否全大写:str.isupper()
str='python String function'
相关文章推荐
- python 3.0学习笔记之一------初识python
- 学习帖-廖雪峰Python教程3.0-Python基础-字符串和编码
- 180206—【Python 初识 D13】字符串序列:切片、字符串不变性
- 初识 Python:Hello World 和字符串操作 | Linux 中国
- Python3.0+学习记录-字符串
- 使用python3.0 编写C/S程序,初识wangpython的网络编程
- python学习之初识字符串
- python 中的字符串转义序列、字符串格式化、操作符、关键字总结
- 初识Python
- python处理中文字符串的问题
- [python]字符串的排序
- Python随机生成指定长度字符串并保存到mysql中
- 初识Python(四)
- cookies提取——从字符串到字典(一行Python代码)
- Python学习之字符串(string)
- Python字符串拼接、截取及替换方法总结分析
- python 字符串与整型转换
- Python字符串替换实例分析
- python 字符串
- python 按照固定长度分割字符串的方法小结