string經常使用方法

string是序列的一種和tuple同樣是不能夠改變的python

一、len:計算string長度 ,返回整數git

>>> len('abc')
3shell

二、index(),返回某個元素在string裏的下標,從0開始,若元素不存在則返回ValueErrorapp

>>> a = 'abv'函數

>>> a.index('a')ui

0this

>>> a.index('c')
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
a.index('c')
ValueError: substring not foundspa

三、slice分片,和list的用法一致,可是string不能改變,因此list的分片賦值不適用stringcode

>>> b = 'this is a good time'
>>> b[0:3]
'thi'orm

四、string簡單格式化,使用字符串格式化操做符(%),左邊放須要格式化的字符串,右側放須要格式化的值(可使用一個值,也可使用元組或者字典)

  >>> 'this is a %s time'%'beautiful'

  'this is a beautiful time'

  >>> 'the price is %f'%7.89

  'the price is 7.890000'

  # 元組,元組中的元素每個都要對應一個%s

  >>> "%s is a smart %s"%('Judy','younglady')
  'Judy is a smart younglady'

五、sring 模板格式化,從string模塊導入substitute模板,這個模板是用關鍵字替換須要格式化string裏的內容,格式$x,若是替換內容是單詞的一部分須要用${x}

  >>> from string import Template

  >>> s = Template('$x, glorious $x')
  >>> s.substitute(x='slurm')
  'slurm, glorious slurm'

  #若是替換內容是單詞的一部分須要用${x}

  >>> from string import Template

  >>> s = Template("It's ${x}tastic ")

  >>> s.substitute(x='slurm')
  "It's slurmtastic "

  #字典模式

  >>> from string import Template

  >>> s = Template("A $thing must never $action")
  >>> d={'thing':'gentleman','action':'show his socks'}
  >>> s.substitute(d)
  'A gentleman must never show his socks'

  #只映射一個值  使用safe_substitute

  s = Template("A $thing must never $action")

  >>> a = {'thing':"gentleman"}

  >>> s.substitute(a)
  Traceback (most recent call last):
  File "<pyshell#97>", line 1, in <module>
  s.substitute(a)
  File "C:\Python37\lib\string.py", line 132, in substitute
  return self.pattern.sub(convert, self.template)
  File "C:\Python37\lib\string.py", line 125, in convert
  return str(mapping[named])
  KeyError: 'action'
  >>> s.safe_substitute(a)
  'A gentleman must never $action'


六、string格式化完整版

  基本的轉換說明符

  • %字符,標記轉換說明符的開始
  • 轉換標識(可選):-表示左對齊;+表示在轉換值以前都要加上正負號;「」空字符串表示正數以前要保留空格;0表示轉換值若位數不夠用0填充;
  • 最小字段寬度(可選):轉換後的字符串至少要具備該值指定的寬度。若是是*,則這個值要從值元組中獲取(有點相似給*賦一個int類型正整數)
  • 點(.)後面跟精度值(可選):若是轉換的是實數,精度值表示小數點後保留的位數;若是轉換的是字符串,表示字符串的取值位數,也就是字符串的最大寬度;若是是*則表示這個值要從值元素中獲取
  • 支持的轉換類型

實例:

簡單轉換:  

>>> 'price of eggs: $%d'%42
'price of eggs: $42'

>>> 'the float number is %.2f'%3.1415
'the float number is 3.14'

>>> 'Using str:%s'%42  ###%s會把格式化的值用str轉換成字符串
'Using str:42'

>>> 'Using str:%s'%'中國'
'Using str:中國'

>>> 'Using str:%r'%'中國'  ###%r表示系統中存儲的格式原樣輸出
"Using str:'中國'"

寬度和精度

寬度:就是制定轉換後的字符串佔用的寬度(字符數);若用*,則從值元組裏取值

精度:數字來講就是保留小數點後面數字的位數,字符串來說就是截取的字符串的最大長度;若用*,則從值元組裏取值

>>> from math import pi
>>> '%10f'%pi
'   3.141593'

>>> '%10.2f'%pi
'       3.14'

>>> '%.5s'%'Guido van Rossum'
'Guido'

>>> "%.*s"%(5,'Guido van Rossum')#### *=5
'Guido'

>>> "%*.*s"%(10,5,'Guido van Rossum')#### 第一個*=10,第二個*=5 至關於「%10.5s」%('Guido van Rossum')
'      Guido'

 七、-左對齊,位置在%後面第一位,寬度以前

>>> "%-10.2f"%4.235
'4.24          '

八、0填充

>>> "%010.2f"%4.235
'0000004.24'

九、「」空字符串兒,在正數前用空格填充,必須用「」,python3.7不支持‘’,會提示ValueError

>>> "%""10.2f"%4.235
'       4.24'

十、+不論正數仍是負數都會顯示正號或者負號,在數據對其時有用

>>> "%-+10.2f%+d"%(4.235,-3)

'+4.24     -3'

實例:根據顧客給定的寬度打印一份水果價格表

# -*- coding: utf-8 -*-
screen_width = input('Screen Width:')
price_width =10
item_width = int(screen_width)-10
header_format = '%-*s%*s'
format = '%-*s%*.2f'


print("="*int(screen_width))
print(header_format%(item_width,'ITEM',price_width,'PRICE'))
print("-"*int(screen_width))
print(format%(item_width,'APPLE',price_width,0.4))
print(format%(item_width,'PEAR',price_width,0.5))
print(format%(item_width,'ORANGE(16OZ)',price_width,1.2))
print(format%(item_width,'BANANA(4 LBS)',price_width,12))
print("="*int(screen_width))

這是結果:

八、find(),在一個長的的字符串兒裏查找一個子字符串,找到則返回子字符串最左邊的字符在長字符串的下標index;找不到則返回-1;還能夠指定查找的起止位置含前不含後

>>> a = "tHis is a test!"
>>> a.find('His')
1
>>> a.find("his")
-1
>>> a.find('His',2,8)###開始和結束位置,結束位置是不包含的,實際查找位置是下標2---7
-1
>>> a.find('His',1)###只有開始位置
1

九、join方法,能夠看作是splite(分割)方法的逆方法

>>> a = [1,2,3]
>>> "+".join(a)####連接數字列表
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
"+".join(a)
TypeError: sequence item 0: expected str instance, int found
>>> b = ["1",'2','3']
>>> "+".join(b)####連接字符列表
'1+2+3'

>>> seq = ['','usr','bin','env']
>>> '/'.join(seq)
'/usr/bin/env'
>>> '\\'.join(seq)
'\\usr\\bin\\env'
>>> "c:"+'\\'.join(seq)
'c:\\usr\\bin\\env'
十、lower()返回字符串的小寫字母版,字符串 不可修改因此不會改變原字符串

>>> a = "tHis is a test!"
>>> a.lower()
'this is a test!'
>>> a
'tHis is a test!'

不用區分大小寫判斷名字是否存在列表中,能夠將客戶輸入的名字和存放名字的列表都轉化成小寫字符形式,再判斷

>>> names = ['Gumby','smith','JONES']

>>> b=[i.lower() for i in names] ###列表推導式
>>> b
['gumby', 'smith', 'jones']

>>> name = input("NAME:").lower()####函數連接從左到右執行
NAME:Smith
>>> if name in b:
print("hello,%s"%name)

hello,smith


十一、title方法,將每一個單詞的首位字母變成大寫字母,單詞的其餘字母變成小寫字母

>>> a
'tHis is a test!'
>>> a.title()
'This Is A Test!'

十二、replace 方法,返回某字符串的全部匹配項被替換後的新字符串

>>> a= 'tHIS IS a test'

>>> a.replace('t','d')
'dHIS IS a desd'

1三、split方法,根據指定的分隔符,分割字符串爲一個序列,默認是遇到分割符就分割,也能夠指定分割次數

>>> '1+2+3+4'.split("+")
['1', '2', '3', '4']
>>> '1+2+3+4'.split("+",1)###指定分割一次
['1', '2+3+4']
>>> '1 2 3 4 '.split()###不指定分割符,默認把全部空格當成分割符
['1', '2', '3', '4']

1四、strip()方法,去除字符串兩端的空格,返回新的字符串

>>> a="  this is a good time  "###先後留有空格
>>> a.strip()
'this is a good time'

 

1五、python3.7中字符串格式換已經修改了舊的%格式新的格式爲:,例如'%03.2f' 如今表示爲 '{:03.2f}'.

>>> '{0}, {1}, {2}'.format('a', 'b', 'c') 'a, b, c' >>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a' >>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence拆包參數序列 '{2}, {1}, {0}'.format("a",'b','c') 'c, b, a' >>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated 參數索引能夠重複 'abracadabra'

 

>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W') 'Coordinates: 37.24N, -115.81W' >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'} >>> 'Coordinates: {latitude}, {longitude}'.format(**coord) 'Coordinates: 37.24N, -115.81W'  

Accessing arguments’ items:

>>> coord = (3, 5) >>> 'X: {0[0]}; Y: {0[1]}'.format(coord) 'X: 3; Y: 5'

Aligning the text and specifying a width:

>>> '{:<30}'.format('left aligned') 'left aligned ' >>> '{:>30}'.format('right aligned') ' right aligned' >>> '{:^30}'.format('centered') ' centered ' >>> '{:*^30}'.format('centered') # use '*' as a fill char '***********centered***********'


Replacing %s and %r:

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
相關文章
相關標籤/搜索