您的位置:首页 > 编程语言 > Python开发

初识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()函数查看字符串长度

>>> 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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: