python 字符串

1. 基本操作

website = 'http://www.python.org'
# 字符串是不可變的  元素賦值, 切片賦值都是不可以的
# website[-3:] = 'com'
# website[1] = 'http'
Traceback (most recent call last):
  File "c:\Users\87600\Desktop\python_basic_learning\3.using_str\1.test_str.py", line 8, in <module>
    website[-3:] = 'com'
TypeError: 'str' object does not support item assignment

2. 字符串基本格式化

2.1 轉(zhuǎn)換說(shuō)明符%s

print('{:=^50}'.format('2.1')) 
basic_str = 'hello, %s %s enough for ya?'
value = ('world', 'Hot')
format_str = basic_str % value
print(format_str)
=======================2.1========================
hello, world Hot enough for ya?

2.2 模板字符串

print('{:=^50}'.format('2.2')) 
from string import Template
tmpl = Template('Hello, $who! $what enough for ya?')
format_str = tmpl.substitute(who='Mars', what='Dusty')
print(format_str)
=======================2.2========================
Hello, Mars! Dusty enough for ya?

2.3 字符串方法format

# 2.3.1 沒(méi)有名稱
print('{:=^50}'.format('2.3.1')) 
format_str = '{}, {} and {}'.format('first', 'second', 'third')
print(format_str)
# 2.3.2 使用索引
print('{:=^50}'.format('2.3.2'))
format_str = '{0}, {1} and {2}'.format('first', 'second', 'third')
print(format_str)
format_str = '{1}, {0} and {2}, {0}'.format('first', 'second', 'third')
print(format_str)
# 2.3.3 使用字段名
print('{:=^50}'.format('2.3.3'))
format_str = '{name}, {value}'.format(name='first', value='second')
print(format_str)
# 2.3.4 直接使用變量值進(jìn)行設(shè)置
print('{:=^50}'.format('2.3.4'))
a = 123456
format_str = f'a={a}'
print(format_str)
======================2.3.1=======================
first, second and third
======================2.3.2=======================
first, second and third
second, first and third, first
======================2.3.3=======================
first, second
======================2.3.4=======================
a=123456

2.4 字符串格式化高級(jí)用法

# 2.4.1 在最后結(jié)果添加花括號(hào)
print('{:=^50}'.format('2.4.1'))
format_str = '{{ hello world }}'.format()
print(format_str)

# 2.4.2 替換字段名
print('{:=^50}'.format('2.4.2'))
format_str = '{foo} {} {bar} {}'.format(1, 2, bar=4, foo=3)
print(format_str)
format_str = '{foo} {1} {bar} {0}'.format(1, 2, bar=4, foo=3)
print(format_str)

# 2.4.3 傳遞列表
print('{:=^50}'.format('2.4.3'))
name = ['wu', 'herry']
format_str = 'Mr {name[1]}'.format(name=name)
print(format_str)

# 2.4.4 傳遞字典
print('{:=^50}'.format('2.4.4'))
temp_dict = {'name': 'Wu'}
format_str = 'Mr {name}'.format(**temp_dict)
print(format_str)



# 2.4.5 傳遞對(duì)象
print('{:=^50}'.format('2.4.5'))
import math
format_str = 'model_name = {mod.__name__}, e = {mod.e}'.format(mod=math)
print(format_str)



# 2.4.6 基本轉(zhuǎn)換    
print('{:=^50}'.format('2.4.6'))
# !s !r !a  -->  str repr ascii
print('{pi!s} {pi!r} {pi!a}'.format(pi=' Π '))
# f 浮點(diǎn)數(shù)
print('{num:f}'.format(num=42))
# b 二進(jìn)制數(shù)
print('{num:b}'.format(num=8))
# o 八進(jìn)制
print('{num:o}'.format(num=8))
# x 十六進(jìn)制
print('{num:x}'.format(num=8))
# e 科學(xué)計(jì)數(shù)法表示小數(shù)
print('{num:e}'.format(num=1.233333333))


# 2.4.7  寬度, 精度和千分位
print('{:=^50}'.format('2.4.7'))
# 使用整數(shù)指定寬度
print('{num:10}'.format(num=3))
# 使用整數(shù)指定精度
print('{num:.10f}'.format(num=3))
# 千分位符
print('{num:,}'.format(num=1000**10))


# 2.4.8 符號(hào),對(duì)齊, 用0填充
print('{:=^50}'.format('2.4.8'))
# 在指定寬度和精度前加特定符
# 用0填充
print('{num:010.3f}'.format(num=65.14))
# 正號(hào)
print('{num:+10.3f}'.format(num=65.14))
# 負(fù)號(hào)
print('{num:-10.3f}'.format(num=-65.14))
# 左對(duì)齊
print('{num:<10.3f}'.format(num=-65.14))
# 右對(duì)齊
print('{num:>10.3f}'.format(num=-65.14))
# 在^前添加填充字符串
print('{num:#^10.3f}'.format(num=-65.14))
# 在符號(hào)說(shuō)明符和寬度之間加上#, 在進(jìn)制前加修飾符
print('{num:#10b}'.format(num=10))
======================2.4.1=======================
{ hello world }
======================2.4.2=======================
3 1 4 2
3 2 4 1
======================2.4.3=======================
Mr herry
======================2.4.4=======================
Mr Wu
======================2.4.5=======================
model_name = math, e = 2.718281828459045
======================2.4.6=======================
 Π  ' Π ' ' \u03a0 '
42.000000
1000
10
8
1.233333e+00
======================2.4.7=======================
         3
3.0000000000
1,000,000,000,000,000,000,000,000,000,000
======================2.4.8=======================
000065.140
   +65.140
   -65.140
-65.140
   -65.140
#-65.140##
    0b1010

2.5 例子

print('{:=^50}'.format('2.5'))
width = 35
price_width = 10
item_width = width - price_width

header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)

print('=' * width)
print(header_fmt)

print(header_fmt.format('Item', 'Price'))

print('=' * width)

print(fmt.format('Apple', 0.4))
print(fmt.format('Pears', 0.5))

print('=' * width)
===================================
{:25}{:>10}
Item                          Price
===================================
Apple                          0.40
Pears                          0.50
===================================

3. 字符串方法

# 3.1 center 在兩邊填充的字符
print('3.1'.center(50, '='))
print('a'.center(10, '!'))

# 3.2 find 查找子串
print('3.2'.center(50, '='))
# 返回第一個(gè)字串的起始索引
base_str = 'as a moo, moo like moo'
print(base_str.find('moo'))
# 查找不到 返回-1
print(base_str.find('baby'))
# 指定起點(diǎn)終點(diǎn)
print(base_str.find('moo', 6, -1))

# 3.3 join 合并序列元素
print('3.3'.center(50, '='))
seq = ['1', '2', '3']
print(''.join(seq))
# 不能合并數(shù)字列表
seq = [1, 2, 3]
# print(''.join(seq))

# 3.4 lower 返回字符串小寫(xiě)
print('3.4'.center(50, '='))
print('ABCsdsa'.lower())

# 3.5 title 修改所有詞首的首字母大寫(xiě)
print('3.5'.center(50, '='))
print("This's all, herry".title())
# capwords修正
import string
print(string.capwords("This's all, herry"))

# 3.6 replace 將指定的子字符串替換為另一個(gè)字符串
print('3.6'.center(50, '='))
print('as a moo, moo like moo'.replace('moo', 'boo'))

# 3.7 split 將字符串拆分成序列
print('3.7'.center(50, '='))
print('as a moo, moo like moo'.split(','))

# 3.8 strip 去除字符串開(kāi)頭和末尾的特殊字符
print('3.8'.center(50, '='))
print('  hello, world !!'.strip(' '))

# 3.9 translate 替換單字符
# 創(chuàng)建轉(zhuǎn)換表
table = str.maketrans('cs', 'kz')
# unicode碼點(diǎn)的映射
print(table)
# 修改單字符
print('this is a incredible test'.translate(table))
# 刪除指定字符
table = str.maketrans('cs', 'kz', 'a')
print('this is a incredible test'.translate(table))
=======================3.1========================
!!!!a!!!!!
=======================3.2========================
5
-1
10
=======================3.3========================
123
=======================3.4========================
abcsdsa
=======================3.5========================
This'S All, Herry
This's All, Herry
=======================3.6========================
as a boo, boo like boo
=======================3.7========================
['as a moo', ' moo like moo']
=======================3.8========================
hello, world !!
{99: 107, 115: 122}
thiz iz a inkredible tezt
thiz iz  inkredible tezt
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宵膨,隨后出現(xiàn)的幾起案子累盗,更是在濱河造成了極大的恐慌,老刑警劉巖枣察,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趁怔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)薪前,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)润努,“玉大人,你說(shuō)我怎么就攤上這事示括∑探剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵垛膝,是天一觀的道長(zhǎng)鳍侣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)繁涂,這世上最難降的妖魔是什么拱她? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮扔罪,結(jié)果婚禮上秉沼,老公的妹妹穿的比我還像新娘。我一直安慰自己矿酵,他們只是感情好唬复,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著全肮,像睡著了一般敞咧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辜腺,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天休建,我揣著相機(jī)與錄音,去河邊找鬼评疗。 笑死测砂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的百匆。 我是一名探鬼主播砌些,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了存璃?” 一聲冷哼從身側(cè)響起仑荐,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纵东,沒(méi)想到半個(gè)月后粘招,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篮迎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年男图,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甜橱。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逊笆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岂傲,到底是詐尸還是另有隱情难裆,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布镊掖,位于F島的核電站乃戈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏亩进。R本人自食惡果不足惜症虑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望归薛。 院中可真熱鬧谍憔,春花似錦、人聲如沸主籍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)千元。三九已至苫昌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幸海,已是汗流浹背祟身。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留物独,地道東北人袜硫。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像议纯,于是被迫代替她去往敵國(guó)和親父款。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溢谤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容