join:連線字串陣列。將字串、元組、列表中的元素按指定的字元(分割符)連線成一個新的字串。

os.path.join:將多個路徑組合並返回。

Python格式化字串

1、格式化操作符(%)

格式化符號說明

%c轉換成字元(ASCII碼值,或者長度為一的字串)

%r優先用repr()函式進行字串轉換

%s優先用str()函式進行字元轉換

%d/%i轉成有符號十進位制

%u轉成無符號十進位制

%o轉成無符號八進位制

%x/%X轉成無符號十六進位制(x/X代表轉換後的十六進位制字元的大小寫)

%e/%E轉成科學計數法(e/E控制輸出e/E)

%f/%F轉成浮點數(小數部分自然截斷)

%g/%G%e和%f/%E和%F的簡寫

%%輸出%(格式化字串裡面包括百分號,那麼必須用%%)

str()得到的字串是面向使用者的,具有較好的可讀性

repr()得到的字串是面向機器的:通常(不是所有)repr()得到的效果是:obj==eval(repr(obj))

格式化操作符輔助符

通過%可以進行字串格式化,但是%經常會結合下面的輔助符一起使用

*定義寬度或者小數點精度

-用做左對齊

+在正數前面顯示加號(+)

#在八進位制數前面顯示零(0),在十六進位制前面顯示0x或者是0X(取決於用x還是X)

0顯示的數字前面填充0而不是預設的空格

(var)對映變數(通常用來處理欄位型別的引數)

m.nm是顯示的最小總寬度,n是小數點後的位數(如果可用的話)

對於Python的格式化操作符,不僅可以接收tuple型別的引數,也可以支援dict.

字串模板

在Python中進行字串的格式化,除了格式化操作符,還可以使用string模組中的字串模板(Template)物件。

下面就主要看看Template物件的substitute()方法:

from string import Template

s = Template("Hi, $name! $name is learning $language")
print s.substitute(name="Wilber", language="Python")

d = {"name": "Will", "language": "C#"}
print s.substitute(d)

# 用$$表示$符號
s = Template("This book ($bname) is 17$$")
print s.substitute(bname="TCP/IP")

字串內建函式format()

python2.6開始,新增了一種格式化字串的函式str.formate(),通過這個函式同樣可以對字串進行格式化處理。

在format()函式中,使用{}符號來當作格式化操作符。

# 位置引數
print "{0} is {1} years old".format("Wilber", 28)
print "{} is {} years old".format("Wilber", 28)
print "Hi, {0}! {0} is {1} years old".format("Wilber", 28)

# 關鍵字引數
print "{name} is {age} years old".format(name = "Wilber", age = 28)

# 下標引數
li = ["Wilber", 28]
print "{0[0]} is {0[1]} years old".format(li)

# 填充與對齊
# ^、<、>分別是居中、左對齊、右對齊,後面頻寬度
# :號後面帶填充的字元,只能是一個字元,不指定的話預設是用空格填充
print '{:>8}'.format('3.14')
print '{:<8}'.format('3.14')
print '{:^8}'.format('3.14')
print '{:0>8}'.format('3.14')
print '{:a>8}'.format('3.14')

# 浮點數精度
print '{:.4f}'.format(3.1415926)
print '{:0>10.4f}'.format(3.1415926)

# 進位制
# b、d、o、x分別是二進位制、十進位制、八進位制、十六進位制
print '{:b}'.format(11)
print '{:d}'.format(11)
print '{:o}'.format(11)
print '{:x}'.format(11)
print '{:#x}'.format(11)
print '{:#X}'.format(11)

# 千位分隔符
print '{:,}'.format(15700000000)

str的內建函式

在最開始的時候,Python有一個專門的string模組,要使用string的方法要先import這個模組。

從Python2.0開始,為了使用方便,str型別添加了很多內建函式,這些函式可以實現跟string模組中函式相同的功能,

也就是說,只要S是一個字串物件就可以直接使用內建函式,而不用import。

常用的str型別的內建函式:

# 小寫 
S.lower() 
# 大寫 
S.upper() 
#大小寫互換 
S.swapcase() 
# 首字母大寫 
S.capitalize() 

# 輸出width個字元,S左對齊,不足部分用fillchar填充,預設的為空格。 
S.ljust(width,[fillchar]) 
# 右對齊 
S.rjust(width,[fillchar]) 
# 中間對齊 
S.center(width, [fillchar]) 

# 返回S中出現substr的第一個字母的標號,如果S中沒有substr則返回-1。start和end作用就相當於在S[start:end]中搜索 
S.find(substr, [start, [end]]) 
# 返回S中最後出現的substr的第一個字母的標號,如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號 
S.rfind(substr, [start, [end]]) 
# 計算substr在S中出現的次數 
S.count(substr, [start, [end]]) 
#把S中的oldstar替換為newstr,count為替換次數
S.replace(oldstr, newstr, [count]) 

# 把S中前後chars中有的字元全部去掉,可以理解為把S前後chars替換為None 
S.strip([chars]) 
S.lstrip([chars]) 
S.rstrip([chars]) 

# 以sep為分隔符,把S分成一個list。maxsplit表示分割的次數。預設的分割符為空白字元 
S.split([sep, [maxsplit]]) 
# 把seq代表的字串序列,用S連線起來 
S.join(seq)