python 字符串组_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类型的变量

你可能感兴趣的:(python,字符串组)