python基本数据类型(二)字符串类型

2 字符串

2.1 定义

是字符序列,是有顺序

2.2 字符串的表示

单引号 ’ ’ 、双引号" “、三引号’’’ ‘’’ / “”” “”"

# 单引号
str1 = 'It\'s a hot day!'
print(str1)

# 双引号
str1 = "It's a hot day!"
print(str1)

# 三引号
prompt = """请选择您要选择的业务:
1.存款
2.取款
3.查看明细
"""

2.3 转义字符与不转义表示

prompt = "请选择您要选择的业务:\n1.存款\n2.取款\n3.查看明细"
print(prompt)

# r =》raw =》原始 =》正则表达式
# r 不转义,作为原始字符串输出

prompt = r"请选择您要选择的业务:\n1.存款\n2.取款\n3.查看明细"
print(prompt)

运行结果

请选择您要选择的业务:
1.存款
2.取款
3.查看明细
请选择您要选择的业务:\n1.存款\n2.取款\n3.查看明细

2.4 字符串取值与切片

取单个字符

prompt = "Today is a hot day!"
# 取一个字符 =》下标法 => 从0开始
# 正下标/索引(从0开始) , 负下标/索引(从-1开始)
print(prompt[0])    # T
print(prompt[-1])   # !

取多个字符 =》切片

str[开始下标:结束下标:步长] 包含开始值,不包含结束值(左闭右开)

开始下标为空 =》 默认就是字符串的开始

结束下标为空 =》 默认就是字符串的结束

步长 =》 默认步长为1,默认从左往右

prompt = "Today is a hot day!"
print(prompt[0:5])   # Today
print(prompt[-4:-1]) # day
print(prompt[-4:])   # day!
print(prompt[::2])   # 跳过1个输出1个
print(prompt[::3])   # 跳过2个输出1个

如果步长为负,默认从右到左取值

print(prompt[::-1]) 
# -1 从右向左输出 !yad toh a si yadoT
print(prompt[4::-1])       # yadoT
print(prompt[0:5][::-1])   # yadoT

切片取值的步骤

1、看步长,如果step为正 ,表示从左到右截取,如果step为负,表示从右到左截取

2、确认start和end的位置

3、确认step的步长是多少

字符串是不可序列

字符串是不可变序列,如果定义好了,不能修改它的值

# 错误演示
prompt = "Today is a hot day!"
prompt[6] = 'I'
print(prompt[6])
# TypeError: 'str' object does not support item assignment

# 如果想修改字符串的内容,只能重新赋值
prompt = "Today is a hot day!"
prompt = "Today Is a hot day!"
print(prompt[6])
# 赋值运算从右到左

2.5 字符串的方法

1.判断系列

image.png

image.png

identifier合法标识符:由 字母、数字或下划线 组成,但是只能以字母和下划线开头

prompt = "Today is a hot day"

# dir 查看对象有什么方法
# print(dir(prompt))
# print(dir(str))

# help =》 查看方法如何用
# help(对象.方法)
# help(prompt.title)
# print(prompt.title())

mystr = '1234'
print(mystr.isdigit())    # T
mystr = '1234一二三q'	   
print(mystr.isnumeric())  # F

mystr = 'Hello world!'
print(mystr.istitle())    # F
print(mystr.isalpha())	  # F
mystr='我是cali'
print(mystr.isalpha())    # T

mystr = "Today is a hot day!"
print(mystr.startswith("Today"))   # T
print(mystr.startswith("hot",11))  # T
print(mystr.endswith("day!"))      # T

2.查找统计类

image.png

mystr = "Today is a hot day"
print(len(mystr))          # 18
print(mystr.count("ay"))   # 2
print(mystr.index('day'))  # 2
print(mystr.find('cold'))  #-1

3.转换类

image.png

image.png

upper() lower() title()
mystr = "Today is a hot day"
print(mystr.upper())
print(mystr.lower())
print(mystr.title())

运行结果:

TODAY IS A HOT DAY
today is a hot day
Today Is A Hot Day
split => 切割字符串 =>默认分隔符为一个或多个空格,得到的结果是一个列表
mystr = "cali#18#female"
print(mystr.split('#'))     
print(mystr.split('#')[0])   
mystr = "cali 18     female"
print(mystr.split())       

运行结果:

['cali', '18', 'female']
cali
['cali', '18', 'female']
join =》 将列表拼接一个大字符串

“分隔符”.join(列表)

mystr = ['cali', '18', 'female']
print('#'.join(mystr))      

a = "字符串拼接1"
b = "字符串拼接2"
c = "".join([a,b])

运行结果:

cali#18#female
字符串拼接1字符串拼接2
strip 去除首尾指定的字符,默认空白字符

如果指定了去除字符,那么从首尾连续取单个的字符看在不在指定的字符里面,如果在,则去除,直到取到不在指定字符里面,就结束

示:输入邮箱: linuxzhen520@163.com

my_email = "  linuxzhen520@163.com  "
print(my_email.strip())
my_email = "linuxzheniii520@163.cmom "
print(my_email.strip(' limo'))

运行结果:

linuxzhen520@163.com
nuxzheniii520@163.c
replace 查找替换功能
mystr = "Today is a hot day! d"
print(mystr.replace('day','Day'))   #默认全部替换
print(mystr.replace('day','Day',1)) #只替换一次

运行结果:

ToDay is a hot Day! d
ToDay is a hot day! d
center() rjust() ljust()
str1 = 'welcome here'
str2 = 'choice1'
print(str1.center(30))
print(str1.center(30,'#'))
print(str2.rjust(30,'.'))
print(str2.ljust(30,'.'))
str1 = '欢迎您'  #中文可能对不齐
print(str1.center(30))

运行结果:

     welcome here         
#########welcome here#########
.......................choice1
choice1.......................
             欢迎您        

2.6 字符串拼接

1.加号拼接

str1 = "i" + " am " + "lilei"
str2 = "beatfullan" * 3

print(str1)
print(str2)

2.join 用字符串列表拼接成一个大字符串

str3 = "".join(["i" , "am", "lilei"])
print(str3)

3. 字符串格式化

3.1 使用% 占位符来进行格式化

%s 表示字符串

%d 表示整型十进制

%f 表示浮点数

%x 表示十六进制数

%o 表示八进制数

%% 表示百分号本身

name = "wen"
age = 18
print("i am %s, my age is %x"%(name, age))


# 基本格式    %[(name)][flags][width].[precision]typecode      
#  s,d,f,x,o为typecode

(name):命名
flags: +,-,' '或0。+表示正数前面填充"+"号;-表示左对齐;' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐,0表示使用0填充。
width表示显示宽度
precision表示小数点后精度

print("第一个格式化:%010x" % 10)
print("第二个格式化:%-11x" %10)
print("第三个格式化:% x"%10)

# flags标志位为 + 或者 空格 只对正数有用,表示和负数对齐。对字符串形式是没有用的

print("第四个格式化: %010.3f"%2.4352341)
print("第五个格式化:%.4f"%4.546456)
print("第六个格式化:%s %%"%("sc"))

image.png

练习:

f1 = 0.234345623
print("%.2f"%(f1*100))
#转化成百分位,保留2位小数,字符串形式展示

4.format 格式化

{变量名:[填充字符][对齐方式<^>][宽度][格式]}
name = "wen"
age = 18

print("format01 --> 姓名:{}, 年龄:{}".format(name,age))
print("format01 --> 姓名:{}, 年龄:{}".format(age,name))
print("format02 --> 姓名:{1}, 年龄:{1}".format(name,age))
print("format02 --> 姓名:{x}, 年龄:{y}".format(x=name,y=age))


#format格式化    {变量:[填充字符][对齐方式 <^>][宽度][格式]}

print("format03 --> {0:*>8}".format(10,20)) 
#变量为format中的第一个数,用*右对齐填充,共八个字符的宽度
print("format04 --> {num:@^10}".format(num=35))

#精度与进制
print("format05 -- > {1:*>15.2f}".format(1/3, 6.33333333333))
print("format06 --> {0:x}".format(10))

#千分位格式化
print("format07  -->{0:,}".format(123456789))



#  f  标志位 格式化
#python3 才有

name = "wen"
age = 18
print(f"my name is {name:a^10}, my age is {age}")

字符串拼接练习:

a = "字符串拼接1"
b = "字符串拼接2"

c = a + b
print(c)

c = "".join([a,b])
print(c)

c = "{}{}".format(a,b)
print(c)

c = f"{a}{b}"
print(c)

print(len(c),c[6])

str1 = "8*y*cali*china**it*soft*linux*python"
# print(len(str1))
str2 = str1.replace("*","")
# print(str2)
print(f"{str2:*>36}")

f 标志位 格式化

#python3 才有

name = "wen"
age = 18
print(f"my name is {name:a^10}, my age is {age}")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值