码迷,mamicode.com
首页 > 其他好文 > 详细

字符串

时间:2017-10-30 21:09:10      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:python

# coding:utf-8

#字符串是不可变,不可修改

#----------------------------------------- 字符串格式化 ------------------------------------------------------------

#基本字符串操作

#索引,分片,乘法,判断成员资格,求长度,取最小值和最大值 对字符串都适用

#请记住字符串是不可变的。因此如下所示的项或分片赋值都是不合法的:

#webite = ‘http://www.python.org‘

#webite[-3:] = ‘com‘


#字符串格式化操作符

format = "Hello, %s, %s enough for ya?"     #格式化字符串的%s部分称为说明符,它们标记了需要植入转换值的位置。S表示值会被格式化,如果不是字符串,则会用str将其转换为字符串。

values = (‘world‘, ‘Hot‘)       #一个值可以用字符串或数字,多个值只能用元组或者字典,如果用列表只能算一个值

print format % values

#Hello, world, Hot enough for ya?

#注意:格式化字符包括百分号,请使用%%


#字符串格式化浮点数

#如果要格式化浮点数,可以使用f说明转换说明符的类型。同时提供所需的精度:一个句点再加上希望保留的小数位数。因为格式化转换说明符总是以表示类型的字符结束,所以精度应该放在类型字符f的前面

format = "Pi with three decimals: %.3f"    #f说明付的类型,.3是小数位

from math import pi         #导入pi函数

print format % pi

#Pi with three decimals: 3.142


#string模块字符串格式化方法

from string import Template     #string模块的Template模板字符串

s = Template(‘$x, glorious $x!‘)        #工作方式类似很多unix shell里的变量替换。

print s.substitute(x=‘slurm‘)         #substitute模板方法传递关键字参数替换字符串中的$x

#slurm, glorious slurm!

s = Template("It‘s ${x}tastic!")     #如果替换字段是单词一部分,那么参数名就必须用括号括起来

print s.substitute(x=‘slurm‘)

#It‘s slurmtastic!

s = Template("Make $$ selling $x!")  #可以使用$$插入美元符号

print s.substitute(x=‘slurm‘)

#Make $ selling slurm!

s = Template(‘A $thing must nerver $action.‘)

d = {}

d[‘thing‘] = ‘gentlemen‘            #除了关键字参数之外,还可以使用字典变量提供值

d[‘action‘] = ‘show his socks‘

print s.substitute(d)

#A gentlemen must nerver show his socks.

#使用元组为格式化字符,必须用括号

print ‘%s plus %s equals %s‘ % (1, 1, 2)

#1 plus 1 equals 2


#转换类型

#d, i       带符号的十进制整数

#o          不带符号的八进制

#u          不带符号的十进制

#x          不带符号的十六进制(小写)

#X          不带符号的十六进制(大写)

#e          科学计数法表示的浮点数(小写)

#E          科学计数法表示的浮点数(大写)

#f, F       十进制浮点数

#g          如果指数大于-4或者小于精度值则和e相同,其他情况和f相同

#G          如果指数大于-4或者小于精度值则和E相同,其他情况和F相同

#C          单字符(接受整数或者单字符字符串)

#r          字符串(使用repr转换任意Python对象)

#s          字符串(使用str转换任意Python对象)


#简单转换

print ‘Price of eggs: $%d‘ % 42   # %d是带符号的十进制整数

#Price of eggs: $42

print ‘Hexadecimal price of eggs: %x‘ % 42   # %x是不带符号的十六进制(小写)

#Hexadecimal price of eggs: 2a

from math import pi

print ‘Pi: %f...‘ % pi      # %f是十进制浮点数

#Pi: 3.141593...

print ‘Very inexact estimate of pi: %i‘ % pi   # %i和%d 是一样的

#Very inexact estimate of pi: 3

print ‘Using str: %s‘ % 42L         # %s 普通字符串

#Using str: 42

print ‘Using repr: %r‘ % 42L        # %r python字符串

#Using repr: 42L


#字段宽度和精度

#字宽度一共有多少位字符,如果宽度过长,前面用空格代替,精度对于数字来说是小数点后面保留几位,对于字符串来说转换后的值所能包含的最大字符个数。

from math import pi

print ‘%10f‘ % pi                   #字段宽度 10

#  3.141593

print ‘%10.2f‘ % pi                #字段宽 10,精度 2

#      3.14

print ‘%.2f‘ % pi                   #精度 2

#3.14

print ‘%.11s‘ % ‘Guido van Rossum‘         #字符串方式

#Guido van R

print ‘%.5s‘ % ‘Guido van Rossum‘

#Guido

print ‘%.*s‘ % (5, ‘Guido van Rossum‘)      #可以用星号作为字段宽和精度,数值从元组参数中读出

#Guido


#符号,对齐和用0填充

#在字符宽度和精度值之前还可以放置一个”标志“,该标志可以是零,加号,减号或空格(就是将原来空格替换掉)。

print ‘%010.2f‘ % pi               #字段宽 10 ,并用0填充

#0000003.14

print ‘%-10.2f‘ % pi                #减号左对齐数值,右侧多出额外空格

#3.14

print (‘% 5d‘ % 10) + \n+ (‘% 5d‘ % -10)     #空格意味着在正数前加上空格。这在需要对齐正负数时会很有用。

#   10

#  -10

print (‘%+5d‘ % 10) + \n+ (‘%+5d‘ % -10)     #加号不管是正数还是负数都标示出符号(同样是在对齐时很有用)。

#  +10

#  -10


#------------------------------------------  字符串方法  --------------------------------------------------------


#find

#find方法可以在一个较长的字符串中查找子串。它返回子串所在位置的最左端索引。如果没有找到则返回-1。

print ‘With a moo-moo here, and a moo-moo there‘.find(‘moo‘)    #查找moo,返回所在位置最左端的索引

#7

title = "Monty Python‘s Flying Circus"

print title.find(‘Monty‘)           #最左端索引位置0

#0

print title.find(‘Python‘)          #最左端索引位置6

#6

print title.find(‘Flying‘)          #最左端索引位置15

#15

print title.find(‘Zirquss‘)         #没找到显示-1

#-1

subject = ‘$$$ Get rich now!!! $$$‘

print subject.find(‘$$$‘)        #找到$$$,返回0,证明在索引0位置找到子串

#0

print subject.find(‘$$$‘, 1)        #起始点索引位置1开始查找,找到后面第二个$$$,索引位置是20

#20

print subject.find(‘!!!‘)           #索引位置16找到

#16

print subject.find(‘!!!‘, 0, 16)    #起始点索引为0和结束点索引为16范围内查找,没有找到

#-1

print subject.find(‘!!!‘, 0, 19)    #起始点索引为0和结束点索引为19范围内查找,找到

#16


#join

#split逆方法,用来连接序列中的元素。

#seq = [1, 2, 3, 4, 5]

#sep = ‘+‘

#print sep.join(seq)   #列表无法join,必须都是字符串

seq = [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]

sep = ‘+‘

print sep.join(seq)     #连接字符串列表

#1+2+3+4+5

dirs = ‘‘, ‘usr‘, ‘bin‘, ‘env‘

print  ‘/‘.join(dirs)

#/usr/bin/env

print ‘C:‘ + \\.join(dirs)

#C:\usr\bin\env


#lower

#返回字符串的小写字母

print ‘Trondheim Hammer Dance‘.lower()

#trondheim hammer dance

#用户输入大写字母,可以用来变成小写并查找到(忽略大写)

name = ‘Gumby‘

names = [‘gumby‘, ‘smith‘, ‘jones‘]

if name.lower() in names: print ‘Found it!‘

#Found it!


#replace

#replace方法返回某字符串的所有匹配项均被替换之后得到字符串

print ‘This is a test‘.replace(‘is‘, ‘eez‘)

#Theez eez a test


#split

#join逆方法,字符串分割成序列

print ‘1+2+3+4+5‘.split(‘+‘)

#[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]

print ‘/usr/bin/env‘.split(‘/‘)

#[‘‘, ‘usr‘, ‘bin‘, ‘env‘]

print ‘Using the default‘.split()   #如果不提供任何分隔符,程序会把所有空格作为分隔符(空格,制表,换行等)

#[‘Using‘, ‘the‘, ‘default‘]


#strip

#strip方法返回去除两侧(不包括)内部空格的字符串

print ‘   internal whitespace is kept    ‘.strip()

#internal whitespace is kept

#用户如果输入值带有空格。

names = [‘gumby‘, ‘smith‘, ‘jones‘]

name = ‘gumby   ‘

if name in names: print ‘Found it!‘           #这样匹配不到

if name.strip() in names: print ‘Found it!‘   #可以匹配

#Found it!

#也可以指定需要去除的字符串,将它们列为参数即可。

print ‘*** SPAM * for * everyone!!! ***‘.strip(‘ *!‘)    #这个方法只会去除两侧字符,所以字符串中的星号没有被去掉

#SPAM * for * everyone


#translate

#和replace一样替换,但translate只替换单个字符,可以同时进行多个替换。

from string import maketrans

table = maketrans(‘cs‘, ‘kz‘)     #将模板maketrans里面的c替换k,s替换成z

print len(table)        #多少字符串

#256

print table[97:123]

#abkdefghijklmnopqrztuvwxyz

print maketrans(‘‘, ‘‘)[97:123]

#abcdefghijklmnopqrstuvwxyz


#涉及的函数

#string.capwords(s[, sep])          使用split函数分割字符串s(以sep为分隔符),使用capitalize函数将分割得到的各单词首字母大写,并且使用join函数以sep为分隔符将各单词连接起来

#string.maketrans(from, to)         创建用于转换的转换表。


本文出自 “桃子技术” 博客,请务必保留此出处http://taozijishu.blog.51cto.com/11320335/1977455

字符串

标签:python

原文地址:http://taozijishu.blog.51cto.com/11320335/1977455

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!