稚昂长

不如意事常八九 可与言者无二三

字符串的索引与切片

字符串的索引值如下:
1
2
3
正向索引值    0    1   2    3    4    5
字 符 串 P y t h o n
反向索引值 -6 -5 -4 -3 -2 -1
例如p的索引值为0或-6
以下为字符串索引的例子 ① 访问指定字符
1
2
3
s = "python"
print(s[0])
print(s[-6])
输出的结果都为“p”

p
p

② 访问区间([头下标:尾下标])
1
2
3
4
5
s = "python"
print(s[0:5]) #打印正向0到5
print(s[0:5:2]) #打印正向0到5,隔一个字符取一个
print(s[5:0:-1]) #打印反向,为0的字符无法取到
print(s[::-1]) #反向取整串
反向取头下标必须大于尾下标,否则输出为空 输出的结果为 > pytho > pto > nohty > nohtyp

字符串处理与操作

字符串基本运算符

运算符描述
+"yz"+"666"结果为"yz666"
*"yz"*6结果为yzyzyzyzyzyz
in判断是否为子字符串,"yz"in"yz6"结果为True

字符串处理函数

函数描述
len(x)返回字符串长度
str(x)将任意类型转换为字符串
chr(x)返回Unicode编码为x的字符
ord(x)返回x的Uincode编码值
hex(x)将整数x转化为16进制,返回小写字符串
oct(x)将整数x转化为8进制,返回小写字符串
1
2
注:  ①大小写字母的Unicode编码都是按顺序排列的
②小写字母的编码整体大于大写字母的编码,大写字母的编码大于数字的编码

内置字符串处理方法

字符串的查找
- **find()**和**rfind()**用于查找一个字符串在指定范围(默认为整个字符串)中首次和最后一次的位置,不存在会返回-1
1
2
3
4
s = "Thisisyz'sblog,bolgiscool"
print(s.find("blog")) #"bolg"在字符串s中第一次出现的位置
print(s.rfind("is")) #"is"在字符串是中最后一次出现的位置
print(s.find("666"))

10
19
-1


- **index()**和**rindex()**用于查找一个字符串在指定范围(默认为整个字符串)中首次和最后一次的位置,不存在会抛出异常 用法:`字符串.index('要查找的字符')`
1
2
3
4
s = "Thisisyz'sblog,bolgiscool"
print(s.index("blog")) #"bolg"在字符串s中第一次出现的位置
print(s.rindex("is")) #"is"在字符串是中最后一次出现的位置
print(s.index("666"))

print(s.index("666"))
ValueError: substring not found
10
19


- **count()**用来返回字符串在范围内出现的次数,不存在会返回0 用法:`字符串.count('要计数的字符')`
1
2
3
4
s = "python I love python pppp"
print(s.count("p"))
print(s.count("python"))
print(s.count("66"))

6
2
0



字符串的分割
  • split()rsplit()方法分别用来以指定字符为分隔符,从原字符串左端右端开始将其分隔成多个字符串

用法:变量.resplit('分割符',maxsplit=最大分割次数)maxsplit可缺省

1
2
3
4
5
6
7
a="一,二,三,四,五,六"
print(a.split(',',maxsplit=2)) #按','分割,分两次
print(a.rsplit(',',maxsplit=2)) #按','分割,分两次

b='H E L L O'
print(b.split()) #按照默认分割
print(b.split(maxsplit=3))#按照默认从右分割三次

[‘一’, ‘二’, ‘三,四,五,六’]
[‘一,二,三,四’, ‘五’, ‘六’]
[‘H’, ‘E’, ‘L’, ‘L’, ‘O’]
[‘H E’, ‘L’, ‘L’, ‘O’]

可见分割后返回的结果是列表
默认按照空白字符(空格,制表符,换行符)来分割

  • partition()rpartition()方法分别用来以指定字符串为分隔符将原字符串分隔为 3 个 部分:
    分隔符之前的字符串-----分隔符字符串-----分隔符之后的字符串
    如果指定的字符串不在原字符串中,则返回原字符串和两个空字符串。
    如果字符串中有多个分隔符,则:
        partition()方法按从左向右遇到的第一个分隔符来进行分隔;
        rpartition()方法按从右向左遇到 的第一个分隔符来进行分隔。

用法:字符串.aprtition('分隔字符')

1
2
3
a="一,二,三,四,三,二,一"
print(a.partition('三'))
print(a.rpartition('三'))

(‘一,二,’, ‘三’, ‘,四,三,二,一’)
(‘一,二,三,四,’, ‘三’, ‘,二,一’)



字符串的连接
  • join()
    用法:'连接符.join(字符串)'
1
2
s=["2020","04","14"]
print('-'.join(s))

2020-04-14



字符串转换大小写

s = 'This is my blog.'

代码 效果
s.lower() 小写
s.upper() 大写
s.capitalize() 首字母大写
s.title() 所有首字母大写
s.swapcase() 互换大小写

示例:

1
print(s.swapcase())

tHIS IS MY BLOG.



字符串替换
  • replace()
    用法:字符串.replace("被替换内容","替换内容")
1
2
s = 'This is my blog.'
print(s.replace("my","我的"))

This is 我的 blog.



字符串删除

用法:字符串.strip('删除类容')

  • strip() 删除字符串两端字符
  • rstrip()删除字符串右端字符
  • lstrip()删除字符串左端字符
1
2
3
4
s = '+++++++WORLD+++++++'
print(s.strip("+"))
print(s.rstrip('+'))
print(s.lstrip('+'))

WORLD
+++++++WORLD
WORLD+++++++



字符串判断

是否以指定字符开始或结束

用法:字符串.endwith('XXX') 返回 True 或 False

startswith() 开始
endswith() 结束

1
2
s = '2019010088'
print(s.startswith("2019"))

True

字符串类型判断
isupper() 是否全为大写
islower() 是否全为小写
isdigit() 是否全为数字
isalnum() 是否为数字或字母
isalpha() 是否全为字母


字符串排版
1
2
3
4
5
6
7
8
9
s = "Hello World"

print(s.center(30, "=")) #字符串居中对齐,输出宽度为 30,不足的以“=”填充

print(s.ljust(20, "*")) #字符串居左对齐,输出宽度为 20,不足的以“*”填充

print(s.rjust(20, "*")) #字符串居右对齐,输出宽度为 20,不足的以“*”填充

print(s.zfill(20)) #输出宽度为 20,在字符串左侧以字符“0”填充

=========Hello World==========
Hello World*****
*****Hello World
000000000Hello World



format()格式化法

  • -
1
2
print("我是{},我的网站地址是{}".format('园长','https://yzyyz.top'))  #默认顺序
#print("我是{0},我的网站地址是{1}".format('园长','https://yzyyz.top')) #指定顺序

我是园长,我的网站地址是https://yzyyz.top


  • -

使用 format()方法格式化字符串的时候,首先需要在“{}”中输入“:”,在“:”之后分别设置<填充字符> <对齐方式> <宽度>

可选值
<填充字符> “*”,“=”,“ -”等,但只能是一个字符,默认为空格
<对齐方式> ^(居中)、 <(左对齐)、 >(右对齐)
<宽度> 一个整数,指格式化后整个字符串的字符个数
  • -
    1
    2
    3
    print("{:.2f}".format(3.1415926)) # 结果保留 2 位小数 
    print("{:=^30.4f}".format(3.1415926)) # 宽度 30,居中对齐,“=”填充,保留 4 位小数
    print('{:5d}'.format(24)) # 宽度 5,右对齐,空格填充,整数形式输出
    可知默认填充符是空格,默认对齐方式是右对齐

3.14
============3.1416============
24




混合运算和类型转换

这里记录下*混合运算和类型转换 *

类型自动转换

1
2
3
4
5
f = 24 + 24.0      # 输出 48.0
type(f) # 输出<class 'float'>
56 + True # 将 True 转换成 1,输出 57,True 为布尔类型
44 + False # 将 False 转换成 0,输出 44,False 为布尔类型
56 + '4' # 报错,数值型数据和字符串无法做“+”运算
`注意,在混合运算中,布尔类型(bool)True 将自动转换成 1,False 将自动转换成 0 参与运算`

混合运算和类型转换

1
2
3
int(2.32)   # 转换为整数类型,输出 2
float(5) # 转换为浮点数类型,输出 5.0
int("abc") # 无法转换,报错 invalid literal for int() with base 10: 'abc'

2020/4/1 0:30:40


 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 volantis 作为主题 。