python學習——字符串

所有的標準序列操作都是用於字符串,但是字符串是不可變的,因此所有的元素賦值和切片賦值都是非法的。

一、設置字符串的格式

# 設置字符串的格式
# 只寫兩種
# 1、使用元組
a = "Hello, %s. %s enough for ya?"
values = ('world', 'Hot')
print(a % values)
# 2、使用模板字符串
tmpl = Template("Hello, $who! $what enough for ya?")
print(tmpl.substitute(who='Mars', what='Dusty'))

二、替換字段

這裏主要是對字符串調用方法format,並提供要設置其格式的值。
字符串包含有關如何設置格式的信息,而這些信息是使用一種微型格式指定語言(mini-language)指定的。
每個值都被插入字符串中,以替代用花括號括起的**替換字段**。要在最終結果中包含花括號,可在格式字符串中使用兩個花括號({{或}})來指定。

替換字段包含:

  • 字段名:索引或標識符,指出要設置哪個值的格式並使用結果來替換該字段。
  • 轉換標識:跟在歎號後面的單個字符。當前支持的字符包括r(repr)、s(str)、a(ascii)
  • 格式說明符:跟在冒號後面的表達式。格式說明符讓我們能夠詳細地指定最終的格式,包括格式類型、字段精度和數的精度,如何顯示符號和千位分隔符,以及各種對齊和填充方式。

2.1替換字段名
最簡單的情況下,只需向format提供要設置其格式的未命名參數,並在格式字符串中使用未命名字段。

# 替換字段名
print("{foo} {} {bar} {}".format(1, 2, bar=4, foo=3))
# 還可以通過索引來指定在哪個字段中使用相應的未命名參數
# 這樣可不按順序使用未命名參數。
print("{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3))
# ---------------
# 3 1 4 2
# 3 2 4 1

2.2基本轉換
指定要在字段中包含的值後,就可添加有關如何設置其格式的指令。

# 基本轉換
# !類型說明符 是轉換標識
print("{pi!s}  {pi!r}  {pi!a}".format(pi="Π"))
# ---------------
# Π  'Π'  '\u03a0'
                            字符串格式設置中的類型說明符
類型 含 義
b 將整數表示爲二進制
c 將整數解讀爲Unicode碼點
d 將整數視爲十進制數進行處理,這是整數默認使用的說明符
e 使用科學表示法來表示小數(用e來表示指數)
E 與e相同,用E來表示指數
f 將小數表示爲定點數,但對於特殊值(nan和inf),用大寫表示
g 自動在定點表示法和科學標識法之間做出選擇。這是默認用於小數的說明符。
G 與g相同,但使用大寫來表示指數與特殊值
n 與g相同,但插入隨區域而異的數字分隔符
o 將整數表示爲八進制數
s 保持字符串的格式不變,這是默認用於字符串的說明符
x 將整數表示爲十六進制並使用小寫字母
% 將數表示爲百分比值(乘以100,按說明符f設置格式,再在後面加上%)

2.3寬度、精度和千位分隔符
設置浮點數的格式時,默認在小數點後面顯示6位小數,並根據需要設置字段的寬度,而不進行任何形式的填充。

# 寬度
print("{num:10}".format(num=3))
print("{num:10}".format(num="Bob"))
# ---------------
# '        3'
# 'Bob      '

# 精度,需要在它前面加上一個表示小數點的句點
print("{pi:.2f}".format(pi=3.1415926))
# ---------------
# 3.14

# 千位分隔符,使用逗號
print('One googol is {:,}'.format(10**100))
# ---------------
# One googol is 10,000,000,000,000,
# 000,000,000,000,000,000,000,000,
# 000,000,000,000,000,000,000,000,
# 000,000,000,000,000,000,000,000,
# 000,000,000,000,000

2.4符號、對齊和用0填充

三、字符串方法

# 字符串方法
s = "hello world"
# 1、方法center,在兩邊添加填充字符讓字符串居中
print("center:", s.center(20, "*"))

# 2、方法find,在字符串中查找子串,返回子串的第一個字符的索引
print("find:", s.find('hello'))  # 也可以指定起點和終點s.find("**", 10, 20)

# 3、方法join,與split相反,用於合併序列的元素
seq = ['1', '2', '3', '4']
sep = "+"
print("join:", sep.join(seq))

# 4、方法split,用於將字符串拆分成序列
spl = '/usr/bin/env'
print("split:", spl.split('/'))

# 5、方法lower,返回字符串的小寫版本,而upper,返回字符串的大寫版本
lo = "HeLlO"
print("lower:", lo.lower())
print("upper:", lo.upper())

# 6、方法replace,將指定子串都替換成另一個字符串
print("replace:", s.replace("world", "leo-zu"))

# 7、方法strip,將字符串開頭和末尾的空白刪除,並返回刪除後的結果
stripstr = "    123   "
print("strip:", stripstr.strip())

# 8、方法translate,替換字符串的特定部分,但不同的是它只能進行單字符替換
# 並且可以同時替換多個字符
# 首先創建轉換表,maketrans的第三個參數:指定要將哪些字母刪除。
table = str.maketrans('cs', 'kz')
print("查看轉換表:", table)
tx = 'this is incredible test'
print("translate:", tx.translate(table))
# ---------------
# center: ****hello world*****
# find: 0
# join: 1+2+3+4
# split: ['', 'usr', 'bin', 'env']
# lower: hello
# upper: HELLO
# replace: hello leo-zu
# strip: 123
# 查看轉換表: {99: 107, 115: 122}
# translate: thiz iz inkredible tezt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章