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 转换说明符%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 没有名称
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 直接使用变量值进行设置
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 字符串格式化高级用法

# 2.4.1 在最后结果添加花括号
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 传递对象
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 基本转换    
print('{:=^50}'.format('2.4.6'))
# !s !r !a  -->  str repr ascii
print('{pi!s} {pi!r} {pi!a}'.format(pi=' Π '))
# f 浮点数
print('{num:f}'.format(num=42))
# b 二进制数
print('{num:b}'.format(num=8))
# o 八进制
print('{num:o}'.format(num=8))
# x 十六进制
print('{num:x}'.format(num=8))
# e 科学计数法表示小数
print('{num:e}'.format(num=1.233333333))


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


# 2.4.8 符号,对齐, 用0填充
print('{:=^50}'.format('2.4.8'))
# 在指定宽度和精度前加特定符
# 用0填充
print('{num:010.3f}'.format(num=65.14))
# 正号
print('{num:+10.3f}'.format(num=65.14))
# 负号
print('{num:-10.3f}'.format(num=-65.14))
# 左对齐
print('{num:<10.3f}'.format(num=-65.14))
# 右对齐
print('{num:>10.3f}'.format(num=-65.14))
# 在^前添加填充字符串
print('{num:#^10.3f}'.format(num=-65.14))
# 在符号说明符和宽度之间加上#, 在进制前加修饰符
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, '='))
# 返回第一个字串的起始索引
base_str = 'as a moo, moo like moo'
print(base_str.find('moo'))
# 查找不到 返回-1
print(base_str.find('baby'))
# 指定起点终点
print(base_str.find('moo', 6, -1))

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

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

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

# 3.6 replace 将指定的子字符串替换为另一个字符串
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 去除字符串开头和末尾的特殊字符
print('3.8'.center(50, '='))
print('  hello, world !!'.strip(' '))

# 3.9 translate 替换单字符
# 创建转换表
table = str.maketrans('cs', 'kz')
# unicode码点的映射
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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容