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

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