python字符串

1. 字符串的格式化

类似于c中的printf(),在python中格式化输出字符串使用的是%运算符,通用的形式为
格式标记字符串组 % 输出值组

其中,左边部分的”格式标记字符串“完全和c中一致,右边的'值组'如果有两个及以上的值则需要用小括号括

起来,中间用短号隔开。格式标记字符串的形式:

格式 描述 
%%   百分号标记
%c   字符及其ASCII码
%s   字符串
%d   有符号整数(十进制)
%u   无符号整数(十进制)
%o   无符号整数(八进制)
%x   无符号整数(十六进制)
%X   无符号整数(十六进制大写字符)
%e   浮点数字(科学计数法)
%E   浮点数字(科学计数法,用E代替e)
%f   浮点数字(用小数点符号)
%g   浮点数字(根据值的大小采用%e或%f)
%G   浮点数字(类似于%g)
%p   指针(用十六进制打印值的内存地址)
%n   存储输出字符的数量放进参数列表的下一个变量中

•'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])
它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是

string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s 时,会先调用整型数的函数,把第一

个值也就是1转成string类型,然后再调用str()函数来输出。还有一个repr()函数,可以用%r来标记。

•‘%6.2f’ % 1.235
在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2

位。还有更复杂的:

•‘%06.2f’ % 1.235
在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数

也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不

加的。最后来看最复杂的形式:

•‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}
这种形式只用在要输出的内容为dictionary(一种python的数据类 型)时, 小括号中的(name)和(score)对应

于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是

一一 对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键

来指定。这行代码的输出 为:'newsim:0009.5'。 

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%

%d.%df或%d.%d%f。可以 用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' 

% (6, 2, 2.345)就相当于'%6.2f' % 2.345。

# 字符串对齐
word = "version3.0"
# 20个字符中间对齐
print word.center(20)
# 20个字符两边补齐*
print word.center(20, "*")
# 左对齐
print word.ljust(0)
# 20个字符右对齐
print word.rjust(20)
# 前面空20个字符
print "% 30s" % word

2. 字符串的转义符

计算机中存在可见符和不可见符。可见符是指键盘上的数字、字母和符号,不可见符是指换行、回车等字符,

对于不可见符可以使用转义字符来表示。在python中用'\'作为转义字符,分别如下:

\\    单斜杠
\'    单引号
\"    双引号
\a    发出系统响铃声
\b    退格符
\n    换行符
\t    横向制表符(注意:python中的制表符只占一个字符的位置,而不是二个或四个)
\v    纵向制表符(注意:python中的制表符只占一个字符的位置,而不是二个或四个)
\r    回车符
\f    换页符
\o    八进制数代表的字符
\x    十六进制数代表的字符
\000  终止符,忽略\000后的全部字符

python还提供函数strip()、lstrip()、rstrip()去除字符串中的转义字符:

str.strip()去除字符串中的转义字符
str.lstrip()去除字符串中左端(Left)的转义字符
str.rstrip()去除字符串中右端(Ringht)的转义字符

3. 字符串的合并

python使用‘+’链接不同的字符串,根据两侧变量的类型诀定执行连接操作或加法操作。如果都是字符串类型

,则执行连接操作;如果都是数字类型,则执行加法操作;如果不同类型,则抛出异常TypeError

同时,python还提供了函数join()连接字符串,join()配合列表实现多个字符串的连接十分方便:
strs=['hello','boy']
str=''.join(strs)
#str=helloboy

4. 字符串的截取

python中可以使用索引、切片获取子串,也可以使用函数split()来获取。字符串也属于序列,下面代码使用序

列的索引获取子串:
str='hello'
a=str[4]
#a='o'

通过切片实现有规律的截取。切片语法格式如下:
string(start:end:step)
其中,string表示源字符串变量,(start:end:step)表示从字符串的第start个索引(默认为0)开始到第end个

索引(默认为最后)之间按步长step(默认为1)截取子串:
str='hello'
a=str[0:3]
#a='hel'
b=str[::2]
#b='hlo'
c=str[1::2]
#c='el'

如果需要同时截取多个子串,可以使用split()实现。函数声明如下:
split([char][,num])
其中,char表示用于分割的字符,默认为空格;num表示分割的次数,将字符串分割成num+1个子串。默认由

char在字符串中出现的个数决定。
str='h,e,l l o'
a=str.split()
#a=['h,e,l','l'.'o']
b=str.split(',')
#b=['h','e','l l o']
c=str.split(',',1)
#c=['h','e,l l o']


5. 字符串的比较

python直接使用‘==’、‘!=’运算符比较两个字符串的内容。如果比较的两个变量类型不相同,比较的内容

也不相同。


6. 字符串的查找和替换

6.1 查找字符串

python中提供了find()和rfind()函数对字符串进行查找。声明如下:
find(substring [,start [,end]])
其中,substring表示待查找的子串,start表示开始搜索的索引位置,end表示结束搜索的索引位置。如果找到,

则返回substring在源字符串中第一次出现的索引,否则返回-1。
rfind(substring [,start [,end]])
rfind()与find()参数相同,不同的是rfind()是从字符串的尾部开始查找子串的。

6.2 替换字符串

python使用replace()实现字符串的替换,该函数可以指定退换的次数。但是replace()不支持正则表达式的语

法。replace()声明如下:
replace(old,new[,max])
其中,old表示待替换的字符串;new表示替换old的字符串;max表示替换次数,默认全部替换。函数返回一个

替换后的新子符串。

7. 字符串与日期的转换

python提供了time模块处理时间和日期

7.1 从时间到字符串的转换

time模块中的函数strftime()可以实现从时间到字符串的转换。声明如下:
time.strftime(format[,tuple]) ->string

其中,format表示格式化日期的特殊字符,例如“%Y-%m-%d”;tuple表示需要转换的时间,用元组储存,元组

中的元素分别表示年、月、日、时、分、秒;函数返回一个表示时间的字符串。

参数format格式化日期的常用标记如下:
%a 星期的简写 Weekday name, abbr.
%A 星期的全称 Weekday name, full
%b 月份的简写 Month name, abbr.
%B 月份的全称 Month name, full
%c 本地的日期的时间串 Complete date and time representation
%d 十进制表示的每月的第几天 Day of the month
%H 24小时制小时 Hour (24-hour clock)
%I 12小时制小时 Hour (12-hour clock)
%j 十进制表示的每年的第几天 Day of the year
%m 十进制表示的月份 Month number
%M 十时制表示的分钟数 Minute number
%S 十进制的秒数 Second number
%U 第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday)
%w 十进制表示的星期几(值从0到6,星期天为0)weekday number
%W 每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday)
%x 标准的日期串 Complete date representation (e.g. 13/01/08)
%X 标准的时间串 Complete time representation (e.g. 17:02:10)
%y 不带世纪的十进制年份(值从0到99)Year number within century
%Y 带世纪部分的十制年份 Year number
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。Name of time zone

7.1 字符串到时间的转换

字符串到时间的转换需要进行2次转换,需要用到time模块strptime()函数和datetime模块datetime()函数,转

换分为3步:

(1)调用time模块strptime()函数把字符串转换为元组,声明如下:
time.strptime(string,format) ->struct_time
其中,string表示需要转换的字符串,format表示日期时间的输出格式,函数返回一个存放时间的元组。
(2)把表示时间的元组赋值给表示年、月、日的三个变量
(3)把表示年、月、日的三个变量传递给datetime模块函数datetime(),进行二次转换。datetime()声明如下


datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
函数返回一个datatime类型的变量

转载于:https://www.cnblogs.com/doudongchun/p/3694822.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值