python3基础语法(3)-字符串

1. 访问字符串中的值

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。

字符串使用单引号或者双引号引起来

字符串截取语法:可以正向索引0开始与反向索引-1倒数

变量[头下标:尾下标:步长];默认步长为1

str = 'hello world!'
test1 = str[0:5] #hello
test2 = str[-6:-1] #world
test3 = str[0:5:2]  #hlo
test4 = str[-2:-7:-1] #dlrow
print(str[0]) #h
print(test1, test2)
print(test3, test4)

2. 转义符

在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符

  • 续行符(\)
print("hello \
world \
!")
  • 打印出特殊符号:反斜杠、单引号与双引号
print('\\')#\
print('\'')#'
print('\"')#"
  • 常用

\n (换行)\b(退格)\v(纵向制表符)\t(横向制表符)\a(响铃,执行后电脑会有响声)

print('hello\nworld')
print('hello \b world')#把前面空格移走了
print('hello \v world')
print('hello \t world')

  • 其它

\000(空)\f(换页)\yyy(八进制数,y 代表 0~7 的字符)

\xyy(十六进制数,以 \x 开头,y 代表的字符)

\r(将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。)

print("aa\000bb")
print('hello\fworld')
print("hello\rworld!!!")
print("how are you\rgood")
print("\110\145\154\154\157\40\127\157\162\154\144\41")
print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")

使用\r实现百分比进度

import time
for i in range(101):
    print("\r{:3}%".format(i),end=' ')
    time.sleep(0.3)

3. 字符串格式化

格式化符号:

  • 字母类型

%c【格式化字符及其ASCII码】%s【格式化字符串】

ch = '嗯'
name='xiaoming'
print('my name is %s'%name)
print('我是%s,%c'%(name,ch))

  • 数据类型

%d【格式化整数】%u【格式化无符号整型】%f【格式化浮点数字】%e【科学计数法格式化浮点数】%E【与%e同理】%g【%f和%e的简写】%G【%f和%E的简写】

  • 进制数

%o【格式化无符号八进制数】%x【格式化无符号十六进制数】%X【格式化无符号十六进制数(大写)】%p【用十六进制数格式化变量的地址】

4. f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。

#之前
name = 'lysa'
age = 18
print('my name is %s, age:%d'%(name, age))
#f-string
print(f'my name is {name}, age:{age}')

5. format

python2.6开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

str1 = 'hello'
str2 = 'world'
print('{} {}'.format(str1, str2))
print('{1} {0}'.format(str1, str2))
print('{str2},{str1}'.format(str1='aa',str2='bb'))

# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

数字格式化

num1 = 3.1415926
#保留小数点后两位
print("{:.2f}".format(num1))
#带符号保留小数点后两位
print("{:+.2f}".format(num1))
num2 = 10
#左对齐
print("{:*<4d}".format(num2))
#右对齐
print("{:->4d}".format(num2))
#居中对其
print("{:#^4d}".format(num2))
num3 = 10000000
#逗号分割数据形式
print("{:,}".format(num3))
num4 = 0.1
#百分比格式
print("{:.3%}".format(num4))
#指数计法
print("{:.2e}".format(num3))

进制数

print('{:b}'.format(11))
print('{:d}'.format(11))
print('{:o}'.format(11))
print('{:x}'.format(11))
print('{:#x}'.format(11))
print('{:#X}'.format(11))

6. python的字符串内置函数

  • 糅杂类型

count(str, beg=0, end=len(string)):返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

len(str):返回字符串长度

max(str):返回字符串 str 中最大的字母

min(str):返回字符串 str 中最小的字母

join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

replace(old, new, [, max]):把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。

splite(str='', num=string.count(str)):以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串

 

str1 = 'a'
str2 = 'abcabcagaa'
num1 = str2.count(str1)
num2 = str2.count(str1,0,len(str2))
num3 = str2.count(str1, 0, len(str2)-1)
num4 = len(str2)
_max = max(str2)
_min = min(str2)
print(num1, num2, num3, num4) #5 5 4 10
print(_max, _min) #g a
str1 = '--'
seq = ['g', 'o', 'o', 'g', 'l', 'e']
test1 = str1.join(seq)
str2 = 'hello hello hello hello hello'
old = 'llo'
new = 'e'
test2 = str2.replace(old, new, 3)
print(test1)
print(test2)

str = "this is string example....wow!!!"
print (str.split())        # 默认以空格为分隔符
print (str.split('i',1))   # 以 i 为分隔符
print (str.split('w'))     # 以 w 为分隔符

  • 判断类型

isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False

isalpha():如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False

isdigit():如果字符串只包含数字则返回 True 否则返回 False

isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False

istitle():如果字符串是标题化的(见 title())则返回 True,否则返回 False

isdecimal():检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

islower()、isupper()、isspace()【如果字符串中只包含空白,则返回 True,否则返回 False】

alnum = 'aa123'
alpha = 'num'
num = '18'
a = alnum.isalnum()
print(a, alnum.isalnum(), alpha.isalpha(), num.isdigit(),num.isnumeric())
l = 'aaaa'
u = 'AAAA'
lu = 'AAaa'
print(l.islower(),u.isupper(), lu.islower(), lu.isupper())

  • 查找类型

find(str, beg=0, end=len(string)):检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

index(str, beg=0, end=len(string)):跟find()方法一样,只不过如果str不在字符串中会报一个异常。

rfind(str, beg=0, end=len(string)):类似于 find()函数,不过是从右边开始查找

rindex(str, beg=0, end=len(string)):类似于 index()函数,不过是从右边开始查找

str1 = 'hello world hello world'
str2 = 'hello'
str3 = 'l'
str4 = 'a'
test1 = str1.find(str2)
test2 = str1.find(str3)
test3 = str1.find(str4)
test4 = str1.find(str3,10)
test5 = str1.rfind(str3)
test6 = str1.rfind(str3,14,17)
print(test1, test2, test3, test4)# 0 2 -1 14
print(test5, test6) #21 15

  • 转化类型

capitalize():将字符串的第一个字符转为大写

upper()【转为大写字母】lower()【转为小写】

swapcase():大小写交换转化

title():首字母大写,其余小写

str1 = 'abcd'
str2 = 'hello world'
str3 = 'HeLLo worLD'
test1 = str1.capitalize() #Abcd
test2 = str3.upper() #HELLO WORLD
test3 = str3.lower() #hello world
test4 = str3.swapcase() #hEllO WORld
test5 = str2.title() #Hello World
test6 = str3.title() #Hello World
print('test1=',test1, 'test2=',test2, 'test3=',test3)
print('test4=',test4, 'test5=',test5, 'test6=',test6)
  • 增删类型

center(width, fillchar):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

ljust(width,[fillchar]):返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格

rjust(width, [fillchar]):返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串

zfill(width):返回长度为 width 的字符串,原字符串右对齐,前面填充0

strip([char]):在字符串上执行 lstrip()和 rstrip()

lstrip([char]):截掉字符串左边的空格或指定字符。

rstrip([char]):截掉字符串右边的空格或指定字符。

str1 = 'hello'
test1 = str1.center(20, '*')
test2 = str1.zfill(20)
print(test1)
print(test2)
print(str1.ljust(20,'-'))
print(str1.rjust(20))

str2 = '  -hello-  **'
print(str2.lstrip())
print(str2.rstrip('*'))

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值