说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
字符串可以是一个或者多个文字文本信息,在 Python 中非常容易定义一个字符串,字符串的计算处理非常方便。字符是一个不可变的序列类型。
var = "hello" # 双引号
var = 'world' # 单引号
a = "123" # 注意,这儿是个字符,不是数字
# 三个单引号或者双引号,可以定义多行字符
var = ''' hello
world
I love python
'''
# 加前缀 u,显式说明是 unicode 类型,一般不加
var = u'world'
type(var) # str
var = "hello"
int(var) # 无法转换成数字,会报错
a = "123"
int(a) # 123 成功转为数字
b = 456
str(b) # "456" 成功转为字符
c = [1,2,3]
str(c) # '[1, 2, 3]' 列表转字符串,其他类型类似
切片访问(适用字符、列表、元组等),从左往右索引从0开始,从右开始索引从 -1 开始,取多个时左闭右开原则:
var = 'Hello World!'
# 按索引取部分内容, 索引从0开始, 左必须小于右
# 支持字符、列表、元组
var[0] # 'H'
# 从右开始索引从 -1 开始
var[-1] # '!'
var[-3:-1] # 'ld'
var[1:7] # 'ello W'(有个空格,不包含最后一位)
var[6:] # 'World!' (前后省略按开头结尾)
var[:] # 'Hello World!'(相当于复制)
var[0:5:2] # 'Hlo'(2为步长,2的倍数取)
var[1:7:3] # 'ello W‘ -> 'eo'
var[::-1] # !dlroW olleH 实现反转字符功能
字符之间基础的运算如下:
'good' + 'bye' # goodbye 拼接字符
'good'*3 # goodgoodgood 重复3次
'bye'[1] # 'y' 取第2个索引位, 索引为1
'bye'[-2] # 'y' 取从右索引为-2的内容
'goodbye'[2:5] # 取一段,不包含右边索引位内容
'g' in 'goodbye' # True 成员运算,指定字段是否在目标字符里
'g' not in 'goodbye' # False 指定字段是否不在目标字符里
字符中使用特殊字符时,可用反斜杠 \
转义字符,常用的转义符号如下:
print("一行\n另一行") # 换行
print("一格\t另一格") # 制表
print("我是\b中国人") # 退格,会删除「是」
print('I \'m boy.') # 引号,双引号同
print("看到反斜杠了么?\\") # 反斜杠
以下函数对字符的处理非常用有:
len('good') # 4 字符的长度
'good'.replace('g', 'G') # 'Good' 替换字符
'山-水-风-雨'.split('-') # ['山', '水', '风', '雨'] 用指定字符分隔,默认空格
'好山好水好风光'.split('好') # ['', '山', '水', '风光']
'-'.join(['山','水','风','雨']) # '山-水-风-雨'
'和'.join(['诗', '远方']) # '诗和远方'
其他的还有:
'good'.upper() # 'GOOD' 全转大写
'GOOD'.lower() # 'good' 全转小写
'Good Bye'.swapcase() # 'gOOD bYE' 大小写互换
'good'.capitalize() # 'Good' 首字母转大写
'good'.islower() # True 是否全是小写
'good'.isupper() # False 是否全是大写
'good bYe'.title() # 'Good Bye' 所有的单词首字母转为大写,且其他字母转小写
'Good Bye'.istitle() # True 检测所有的单词首字母是否为大写,且其他字母为小写
'我和你'.endswith('你') # True 是否以指定字符结尾
'我和你'.startswith('你') # False 是否以指定字符开始
' and你'.isspace() # False 是否全是空白字符
'good'.center(10, '*') # '***good***' 字符居中, 其余用指定字符填充, 共多少位
'good'.ljust(10, '-') # 'good------' 左对齐,默认是空格补全
'good'.rjust(10, '-') # '------good' 右对齐
'good'.count('o') # 2 指定字符在字符中的数量
'good'.count('o', 2, 3) # 1 在索引范围内字符出现的数量
'3月'.zfill(3) # '03月' 指定长宽,不够前边补 0
max('good') # 'o' 按最大字母顺序最大的字母
min('good') # 'd' 最小的字母
'Good Good Study'.find('y') # 14 返回指,定字符第一次出现的索引, 如果不包含返回-1
'Good Good Study'.find('o', 3) # 6 指定开始位第一次出现的索引, 如果不包返回-1
'Good Good Study'.find('o', 2, 7) # 2 指定区间内第一次出现的索引, 如果不包返回-1
'Good Good Study'.find('up') # -1 不包含返回-1
rfind(str, beg=0,end=len(string)) # 从右开始的 find()
'Good Bye'.index('d') # 3 指定字符第一个索引
'Good Bye'.index('s') # 找不到会 ValueError 错误, 可以先 in 去判断是否包含
rindex(str, beg=0, end=len(string)) # 从右开始的 index()
# 去空格
'Good bye'.strip('e') # 去掉首尾指定字符, 默认去空格
' Good bye '.lstrip() # 'Good bye ' 去掉左边空格
' Good bye '.rstrip() # ' Good bye'去掉右边空格
# 格式化, 此处推荐 f-string: https://www.gairuo.com/p/python-format-string
f'{name}是好人' # 'tom是好人' 推荐此方法, name = 'tom'
'%s %s' % ('age', 18) # 'age 18'
'{}, {}'.format(18, 'age') # '18 age'
'{0}, {1}, {0}'.format('age', 18) # 'age, 18, age'
'{name}: {age}'.format(age=18, name='tom') # 'tom: 18'
# 分割连接
# 按换行分隔,默认(False)不保留换行符
'Good\nbye\nbye'.splitlines(True) # ['Good\n', 'bye\n', 'bye']
两个字符串相连或者用空格间隔,会被认为是一个拼接后的字符串整体,如下:
'a' 'b'
'a''b'
# 'ab'
这个特性在列表、元组等结构中同样有效,如:
['a', 'b' 'c', 'd']
# ['a', 'bc', 'd']
('a', 'b' 'c', 'd')
# ('a', 'bc', 'd')
因此,要特别注意别忘记在元组和列表中逗号。
特别要注意的是,圆括号(注:它不是元组)的字符串仍然是一个字符:
('b' 'c')
('b''c')
('bc') # 特别注意
# 'bc'
关于 str() 内置函数,可以访问 str() 查看详情。
更新时间:2023-11-23 11:58:47 标签:python 字符串