字符串

# coding:utf-8python

#字符串是不可變,不可修改web

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

#基本字符串操做api

#索引,分片,乘法,判斷成員資格,求長度,取最小值和最大值 對字符串都適用ide

#請記住字符串是不可變的。所以以下所示的項或分片賦值都是不合法的:函數

#webite = 'http://www.python.org'ui

#webite[-3:] = 'com'spa


#字符串格式化操做符unix

format = "Hello, %s, %s enough for ya?"     #格式化字符串的%s部分稱爲說明符,它們標記了須要植入轉換值的位置。S表示值會被格式化,若是不是字符串,則會用str將其轉換爲字符串。orm

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)         建立用於轉換的轉換表。

相關文章
相關標籤/搜索