Python字符串
2015-11-15 16:58
579 查看
字符串的格式化
Python将若干值带有“%”标记的字符串中,可以动态的输出字符串;如果要格式化多个值,元素的顺序和格式化字符串中的替代符顺序一致;
格式化字符串的替代符及其含义:
%c格式化字符及其ASCII码
%d格式化浮点数字
%s格式化字符串
%d格式化整形
%u格式化无符号整形
%o格式化无符号八进制数
%x格式化无符号十六进制数
#字符串格式化语法: %S %str %s %s %(str1,str2) #没有逗号 #格式化字符串: str1 = Baoxin num = 1.0 print(%s%str1) print(%s %d %(str1,num)) #输出结果: Baoxin Baoxin 1 #使用%f格式化浮点数精度,根据精度做“四舍五入”: print("number: %f" %1.25) #输出浮点数 print("number: %.1f" %1.25) #精确到小数点后1位(输出1.2————?) print("number: %.2f" %1.254) #精确到小数点后2位 #输出结果: number: 1.250000 number: 1.2 number: 1.25 #字符串对齐 word = Baoxin1234 print(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)) #输出结果: hello Baoxin Xiaobai 20 hello\tBaoxin\nXiaobai 22
字符串操作
#字符串的连接: #使用“+”连接字符串 str1 = "Hello " str2 = "Baoxin " str3 = "Hello " str4 = "Xiaobai " result = str1 + str2 + str3 result += str4 print(result) print(type(result)) print(len(result)) print(id(result)) print(id(result + "hi")) #字符串连接后将分配新的空间给连接后的字符串,源字符串保持不变 #输出结果: Hello Baoxin Hello Xiaobai <class 'str'> 27 46146632 46203640 #使用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 w iwn 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 = 1 str2 = "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 s str1 = "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头部开始找字符串name str2 = "My name is AAA" print(str2.rfind("is")) #从str2尾部还是找字符串is #输出结果: 5 8 '''字符串的替换: 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,china hi,world,hello,china hello,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,datetime d = 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:58 2015-11-15 21:40:58 45 319 0 Sun Sunday Nov November 2015-11-15 21:40:58 45 319 0 Sun Sunday Nov November Sun Nov 15 21:40:58 2015 time.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
相关文章推荐
- 【程序员技术练级】学习一门脚本语言 python(一)文件处理
- [No00004B]Windows 下面为Python3.5安装NoteBook
- python 指定路径后批量改名
- Python
- Python GUI编程各种实现的对比
- python图形界面(GUI)设计
- Head First Python第三章知识点记录
- Python核心编程读笔 10:函数和函数式编程
- python NLTK环境搭建
- Keras 深度学习框架Python Example:CNN/mnist
- Python的爬虫框架 Scrapy
- 深刻理解Python中的元类(metaclass)
- Windows上Python3.5安装Scrapy(lxml)
- Python3.x和Python2.x的区别
- python操作日期和时间的方法
- Python核心编程读笔 9: 异常
- python MySQLdb连接mysql失败问题
- 官方转载=》python2到3的库的变动
- python 中类的重载以及logging中的level
- python for 循环 一个 list 获取index