Python字符串

来源:互联网 发布:c语言角度转弧度 编辑:程序博客网 时间:2024/05/18 13:07

字符串的格式化

Python将若干值带有“%”标记的字符串中,可以动态的输出字符串;
如果要格式化多个值,元素的顺序和格式化字符串中的替代符顺序一致;

格式化字符串的替代符及其含义:
%c格式化字符及其ASCII码
%d格式化浮点数字
%s格式化字符串
%d格式化整形
%u格式化无符号整形
%o格式化无符号八进制数
%x格式化无符号十六进制数

#字符串格式化语法:%S %str%s %s %(str1,str2)            #没有逗号#格式化字符串:str1 = Baoxinnum = 1.0print(%s%str1)print(%s %d %(str1,num))#输出结果:BaoxinBaoxin 1#使用%f格式化浮点数精度,根据精度做“四舍五入”:print("number: %f" %1.25)               #输出浮点数print("number: %.1f" %1.25)             #精确到小数点后1位(输出1.2————?)print("number: %.2f" %1.254)            #精确到小数点后2位#输出结果:number: 1.250000number: 1.2number: 1.25#字符串对齐word = Baoxin1234print(word.center(20))                  #word两侧各输出5个空格print(word.center(20,*))                #word两侧各输出5个*print(word.ljust(0))                    #输出结果左对齐print(word.rjust(20))                   #输出结果右对齐print(%30s%word)                        #先输出30个空格再输出word,类似于word.rjust(30)#输出结果:     Baoxin1234     *****Baoxin1234*****Baoxin1234          Baoxin1234                    Baoxin1234


字符串的转义字符

计算机中孙在可见字符与不可以见字符;可以见字符指键盘上的字母,数字和符号;
不可见字符指换行,回车等,对于不可见字符可以使用转义字符来表示:
使用反斜杠"\"作为转义字符;
如果要输出“\”,使用"\\";

Python的转义字符及其含义
\'单引号\v纵向制表符\n换行符
\"双引号\t横向制表符\b退格符
\o八进制数代表的字符\x十进制数代表的字符
\000 终止符,\000后的字符串全部忽略

#输出转义字符:str1 = "hello\tBaoxin\nXiaobai"print(str1)print(len(str1))str2 = r"hello\tBaoxin\nXiaobai"        #忽略转义字符的作用,直接输出字符串原始内容print(str2)print(len(str2))#输出结果:helloBaoxinXiaobai20hello\tBaoxin\nXiaobai22



字符串操作

#字符串的连接:#使用“+”连接字符串str1 = "Hello "str2 = "Baoxin "str3 = "Hello "str4 = "Xiaobai "result = str1 + str2 + str3result += str4print(result)print(type(result))print(len(result))print(id(result))print(id(result + "hi"))            #字符串连接后将分配新的空间给连接后的字符串,源字符串保持不变#输出结果:Hello Baoxin Hello Xiaobai <class 'str'>274614663246203640#使用join()函数连接字符串,配合列表实现多个字符串的连接strs = ["Hello ","Xiaobai ","Baoxin ","hahaha"]result = "".join(strs)print(result)#输出结果:Hello Xiaobai Baoxin hahaha#字符串的截取:#Python内置的序列,可以通过索引,切片获取子串,也可以使用函数split()获取;word = "world"print(word[4])#切片的语法格式:string[start:end:step]str1 = "i want to do something"                 #索引从0开始计数print(str1[0:3])print(str1[::2])print(str1[1::3])#输出结果:i wiwn od oehn ntdsei#如果要同时截取多个子串,使用函数split()实现,声明如下split([char],[,num])        #char表示用于分割的字符,默认是空格;num表示分割的次数,如果num等于2,则分割为3个子串;默认是根据char在字符串中出现的个数分割#函数返回由子串组成的列表str1 = "Baoxin said: 1,2,3,4"print("使用空格获取子串:",str1.split())print("使用逗号获取子串:",str1.split(","))print("使用2个逗号获取子串:",str1.split(",",2))#输出结果:使用空格获取子串: ['Baoxin', 'said:', '1,2,3,4']使用逗号获取子串: ['Baoxin said: 1', '2', '3', '4']使用2个逗号获取子串: ['Baoxin said: 1', '2', '3,4']#字符串的比较:Python直接使用"==","!="操作比较两个字符串的内容:str1 = 1str2 = "1"if str == str2:    print("相同")else:    print("不相同")if(str(str1) == str2):    print("相同")else:    print("不相同")#输出结果:不相同相同#字符串的反转:#使用列表中的reverse函数:def reverse(s):    li = list(s)    li.reverse()    s = "".join(li)    return sstr1 = "Baoxin Xiaobai Dabao"print(reverse(str1))#输出结果:oabaD iaboaiX nixoaB#使用序列切片功能:def reverse(s):    return s[::-1]str1 = "Baoxin Xiaobai Dabao"print(reverse(str1))#输出结果:oabaD iaboaiX nixoaB#字符串的查找和替换find(substring [,start [, end]])rfind(substring [,start [, end]])#substring表示待查找的子串;#start,end表示开始和结束的索引位置;#如果找到字符串substring,返回子串在源字符串中第一次出现的索引位置;否则返回-1;str1 = "Your name is XXX"print(str1.find("name"))            #从str1头部开始找字符串namestr2 = "My name is AAA"print(str2.rfind("is"))             #从str2尾部还是找字符串is#输出结果:58'''字符串的替换:Python使用replace()函数实现字符串的替换,该函数可以指定替换的次数,不支持正则表达式,声明如下:old表示将被替换的字符串;new表示新字符串;max表示替换的次数;函数返回新的字符串,如果old不在源字符串中,则函数返回源字符串的值'''replace(old,new[,max])#replace先创建变量str1的拷贝,在拷贝中替换字符串,并不会改变str1的内容str1 = "hello,world,hello,china"print(str1,id(str1),"\n")print(str1.replace("hello","Baoxin"))print(str1.replace("hello","hi",1))print(str1.replace("ABC","hi"),"\n")print(str1,id(str1))#输出结果:hello,world,hello,china 51039936 Baoxin,world,Baoxin,chinahi,world,hello,chinahello,world,hello,china hello,world,hello,china 51039936


字符串与日期的转换:

format表示格式化日期的特殊字符.如"%Y-%m-%d"
tuple表示需要转换的时间,用元祖存储;元祖中的元素分别表示年,月,日,时,分,秒
函数返回字符串


Python提供了time处理模块处理日期和时间,函数strftime()可以实现从时间到字符串的转换,声明如下:
strftime(format[,tuple])   -->string


format格式化日期常用标记:
%a  英文星期的简写      %d  日期1-31     
%A  英文星期的大写      %H  小时数00-23
%b  英文月份的小谢      %M  分钟数01-59
%B  英文月份的大写      %m  月份01-12 
%c  显示本地日期时间    %x  本地当天日期    %X  本地当天时间
%Y  年份完整数字        %j  显示从本年第一天到当天的天数
%w  显示今天是星期几    %W  显示当天属于本年的第几周


字符串到时间的转换需要进行两次转换,需要使用time模块和datetime类,3个步骤:

    1.调用函数strptime()把字符串转换为一个元祖,strptime()的声明如下:
        strptime(string,tuple) -->struct_time:
            string表示需要转换的字符串
            format表示日期时间的输出格式
            函数返回一个存放时间的元祖

    2.把表示时间的元祖赋值给表示年月日的3个变量

    3.把表示年月日的3个变量传递给函数datetime()进行第二次转换,datetime()函数如下:

        datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
        参数年月日不可少;返回1个datetime类型的变量;



代码展示如下:

import time,datetimed = time.localtime()print(d,"\n",type(d),"\n")print(time.strftime("%Y-%m-%d %X",time.localtime()))        #时间到字符串的转换,返回当前时间,strftime把当前时间格式转换为字符串类型print(time.strftime("%Y-%m-%d %X %W %j %w %a %A %b %B",time.localtime()))print(time.strftime("%Y-%m-%d %X %W %j %w %a %A %b %B"))print(time.strftime("%c"))t = time.strptime("2008-08-08","%Y-%m-%d")                  #字符串到时间的转换,把字符串"2008-08-08"转换为一个元祖返回print()print(t,"\n",type(t),"\n")y,m,d = t[0:3]print(datetime.datetime(y,m,d))                             #调用datetime()返回时间类型#输出结果:time.struct_time(tm_year=2015, tm_mon=11, tm_mday=15, tm_hour=21, tm_min=40, tm_sec=58, tm_wday=6, tm_yday=319, tm_isdst=0)  <class 'time.struct_time'> 2015-11-15 21:40:582015-11-15 21:40:58 45 319 0 Sun Sunday Nov November2015-11-15 21:40:58 45 319 0 Sun Sunday Nov NovemberSun Nov 15 21:40:58 2015time.struct_time(tm_year=2008, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=221, tm_isdst=-1) <class 'time.struct_time'> 2008-08-08 00:00:00


0 0
原创粉丝点击