数据类型之字符串(string)(四)

字符串本质是:字符序列
不可变


# 字符串编码,Unicode
ord('A')
ord('王')

# 创建字符串,引号
a = 'Hello python!'
b = "I'm a teacher!"
c = """
name
age
job
"""
d = '' # 空字符串


# 转义字符 “\+特殊字符”
"""
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\b 退格
\n 换行
\t 制表符
\r 回车
"""


# 字符串拼接
"""
1、+号连接
字符串+字符串——拼接
数字+数字——计算
类型不同——报错
2、可以将多个字符串直接放在一起实现拼接
"""
print('abc' + 'cde')
print('abc' 'cde')

# 字符串复制
print('abc'* 10)

# 不换行打印
print('doc', end='\t')
print('wang', end=' ')
print('王', end='*')

# 从控制台读取字符串
# name = input("请输入姓名:")
# print(name)


# str()函数,将其他类型转为字符串
print(str(3.33))
print(str(True))

# 提取字符串
# 左侧从0开始,右侧从-1开始
a = 'abcdefghijklmnopqrstuvwxyz'
print(a[0])
print(a[3])
print(a[-1])


# replace()实现字符串替换,本质是创建了新的字符串对象

b = a.replace('c', '王')
print(a)
print(b)

# 切片
print(a[:]) # 提取整个字符串
print(a[1:4])
print(a[3:8:2]) # 步长为2

print(a[-3:])
print(a[::-1])

print(a[12:300]) # 不报错

# split()分割
a = "to be or not to be"
print(a.split())
print(a.split('be'))


# join(),字符串拼接
a = ['wang', 'and', 'zhang']
print('*'.join(a))
print(''.join(a))
print(' '.join(a))

"""
字符串驻留机制
对于符合标识符规则的字符串(仅包含下划线、字母和数字),会启用
"""

a = 'abc_33'
b = 'abc_33'
print(a is b) # True

c = 'abc#'
d = 'abc#'
print(c is d) # 交互界面为False,pycharm为True
print(id(c))
print(id(d))

# 字符串比较和同一性
print(a == b) # 比较值是否相等
print(a is b) # 比较是否为同一对象

# 成员操作符 in / not in
print('a' in a)
print('d' in a)

# 查找方法
a = '岸柳可藏鸦。路转溪斜。忘机鸥鹭立汀沙。咫尺钟山迷望眼,一半云遮。\
临水整乌纱。两鬓苍华。故乡心事在天涯。几日不来春便老,开尽桃花。'

print(len(a)) # 字符串长度
print(a.startswith('岸柳可藏鸦')) # 是否以指定字符串开头
print(a.endswith('开尽桃花。')) # 是否以指定字符串结尾
print(a.find('路')) # 第一次出现位置
print(a.rfind('路')) # 最后一次出现位置
print(a.count('华')) # 出现次数
print(a.isalnum()) # 受否为字母数字

# 去除首位信息
b = ' 开尽桃花 '
print(b.strip()) # 去除首尾空格,可传参数,去除指定字符
print(b.lstrip()) # 去除左侧空格,可传参数,去除指定字符
print(b.strip()) # 去除右侧空格,可传参数,去除指定字符


# 大小写转换,均产生新的字符串
c = 'I love you,Baby!'
print(c.capitalize()) # 首字母大写
print(c.title()) # 标题
print(c.upper()) # 全部大写
print(c.lower()) # 全部小写
print(c.swapcase()) # 大小写转换


# 格式排版
print(c.center(40, '*')) # 指定字符串,c居中,不足以*补齐,缺省为空格补齐
print(c.ljust(40)) # 左对齐
print(c.rjust(40)) # 右对齐

# 其他方法
c = '枯藤老树昏鸦'
print(c.isalnum()) # 是否为字母数字
print(c.isalpha()) # 是否为字母(包括汉字)
print(c.isdigit()) # 是否为数字
print('\t\n'.isspace()) # 是否为空白符
print(c.isupper()) # 是否为大写字母
print(c.islower()) # 是否为小写字母

# 字符串格式化
msg = "名字是:{0},年龄是:{1}"
m = msg.format('doc wang', 22)
print(m)

msg = "名字是:{name},年龄是:{age}"
m = msg.format(name='doctor', age=18)
print(m)

# 填充和对齐
"""
^、<、>分别是居中、左对齐、右对齐,后面带宽度
"""
r = "{:*>8}".format("234")
"""
说明:*号表示用填充字符(缺省为空格填充),>右对齐,8表示填充为8个字符
"""
print(r)


# 数字格式化
a = "我是{},我的工资为{:1.2f}"
print(a.format('doc wang', 3500.23723))

b = "{:0>2d}".format(5)
c = "{:+.2f}".format(3.141592)
print(b)
print(c)
"""
{:.2f} 保留2位小数
{:+.2f} 带符号,保留2位小数
{:.0f} 不带小数
{:0>2d} 数字补零(填充左边,宽度为2)
{:0<4d} 数字补零(填充右边,宽度为4)
{:x<4d} 数字补x(填充右边,宽度为4)
{:,} 以逗号分隔的数字格式
{:.2%} 百分比格式
{:.2e} 指数记法
{:10d} 右对齐(默认,宽度为10)
{:<10d} 左对齐(宽度为10)
{:^10d} 居中对齐(宽度为10)
"""


# 可变字符串
import io
s = "hello,python"
sio = io.StringIO(s)
print(sio)
sio.seek(7)
sio.write('王')
print(sio.getvalue())

猜你喜欢

转载自www.cnblogs.com/doc-wang/p/11768484.html
今日推荐