Python-数据类型:字符串
0 前言
1 字符串的重要特性
1.1 创建字符串
- Python没有单字符,只有字符串,单引号和双引号等效
x1 = '' # 空字符串
x2 = 'abc'
x3 = str(123)
- 三个单引号或者双引号创建多行字符串
a = '''
x
y
z
'''
1.2 转义字符
转义字符 | 说明 |
---|---|
\' | 单引号‘ |
\" | 双引号“ |
\\ | 反斜杠\ |
\n | 换行 |
\ (在行尾) | 续行符 |
\t | TAB键 |
1.3 字符串加法和乘法
x = 'a' + 'b'
y = 'ab' * 3
x = x + 'c'
>>>x = 'ab'
>>>y = 'ababab'
>>>x = 'abc'
1.4 字符串切片 slice
对字符串x= 'abcde'
的每一个字符有两种定位方式:
字符串 | a | b | c | d | e |
---|---|---|---|---|---|
正序定位 | 0 | 1 | 2 | 3 | 4 |
逆序定位 | -5 | -4 | -3 | -2 | -1 |
使用[start:end:step]
选择区域,step
默认为1
,记住包头不包尾(包括start
,不包括end
)
x = 'abcde'
x = x[1] # 'b'
x = x[-4] # 'b'
x = x[:] # 'abcde'
x = x[2:] # 'cde'
x = x[:2] # 'ab'
x = x[:-2] # 'abc'
x = x[-2:] # 'de'
x = x[2:4] # 'cd'
x = x[0:4:2] # 'ac'
x = x[::-1] # 'edcba'
2 print函数
说明 | |
---|---|
print(obj1, ... objn, sep=' ', end='\n') | obj -> 可以是变量或者直接字符串sep -> 多个obj之间的分隔符,默认为空格end -> 结尾字符,默认为\n |
print('sxt1', end='连接')
print('sxt2')
print('sxt3')
>>>sxt1连接sxt2
>>>sxt3
- print同样支持格式控制符
a = 'lili'
b = 16
print('my name is %s and %d years old' %(a,b))
>>>
'my name is lili and 16 years old'
- print可以和format合用
a = '小明'
b = 18
print('我叫{0},年龄{1}'.format(a,b))
>>>
'我叫小明,年龄18'
- print可以指定输出到文件
print('输出到文件', file='run.log')
3 字符串方法
字符串是不可变数据,体现为字符串的方法都不会修改字符串自身,必须使用=
赋值给新变量才有意义
新变量可以与原字符串同名,本质是创建同名变量接收结果,并撤销原变量
- 数据处理方法
self = String类 | 说明 |
---|---|
len(self) -> num | 字符串长度 |
self[start:end:step] -> str | 字符串的切片只能读取,不能赋值 |
self.index(substr) -> indexself.index(substr) -> Exception | 返回substr 首位在字符串self 中的下标没有则报 ValueError |
self.find(substr) -> indexself.find(substr) -> -1 | 返回子串substr 首位在字符串self 中的下标没有则返回 -1 |
self.count(substr) -> num | 返回字串substr 在字符串self 中出现次数 |
self.replace(oldstr, newstr) -> str | 将oldstr 换成newstr ,返回字符串找不到 oldstr 则返回原字符串 |
self.split(substr) -> [str, str] | 以子串substr 分隔字符串,默认为空格。返回[str0, str1] |
self.partition(substr) -> (str, str, str) | 字符串分割为substr 前,substr 和substr 后,默认substr 为空格返回 (str0, substr, str1) |
self.join(list) -> str | 使用字符串self 连接列表中的字符串。返回字符串list ->字符串列表 |
- 文字排版方法
self = String类 | 说明 |
---|---|
self.capitalize() -> str | 全句第一个字符大写 |
self.title() -> str | 单词第一个字符大写 |
self.upper() -> str | 全部字符大写 |
self.lower() -> str | 全部字符小写 |
self.swapcase() -> str | 全部字符大小写对换 |
self.strip(substr) -> str | 去除字符串首尾的子串substr ,默认substr 为空格 |
self.lstrip(substr) -> str | 去除字符串左边的子串,默认substr 为空格 |
self.rstrip(substr) -> str | 去除字符串右边的子串,默认substr 为空格 |
self.center(n, substr) -> str | 居中对齐,用子串将字符串填充到n 位 |
self.ljust(n, substr) -> str | 向左对齐,用子串将字符串填充到n 位 |
self.rjust(n, substr) -> str | 向右对齐,用子串将字符串填充到n 位 |
3.1 字符串代替 replace
x = 'abcdec'
x = x.replace('c','高')
>>>x = 'ab高de高'
可以指定替换执行的次数
x = 'abcdec'
x = x.replace('c','高', 1)
>>>x = 'ab高dec'
3.2 字符串插入 insert
insert表示在index前一位插入指定的字符串,index=0时插在开头
x = 'abcde'
x = x.insert(1,'高')
>>>x = 'a高bcde'
3.3 字符串移除 remove pop
remove表示删除第一次出现的指定字符串
x = x.remove('*') # 删除第一次出现的*号
pop表示删除index及以后的字符,默认为-1
,即删除最后一位
x = x.pop()
x = x.pop(2)
3.4 字符串分割 split partition
x = 'ab cde'
x1 = x.split() #默认以空格分隔
x1 = x.split('c')
x2 = x.partition()
x2 = x.partition('c')
>>>x1 = ['ab', 'cde']
>>>x1 = ['ab ', 'de']
>>>x2 = ('ab', ' ', 'cde')
>>>x2 = ('ab ', 'c', 'de')
3.5 字符串换行 splitlines
splitlines将字符串按换行符\n
分割,默认不保留换行符本身,除非选择keepends=True
x = 'ab\ncde'
x3 = x.splitlines(keepends=True)
print(x3)
>>>x3 = ['ab\n', 'cde']
3.6 字符串连接 join
x = '*'.join(['good','man'])
y = ''.join(['good','man'])
>>>x = 'good*man'
>>>y = 'goodman'
3.7 字符串第一次出现位置 find, index, rfind, rindex
find方法如果没找到,则返回-1
rfind是返回最后一次出现的index
x.find('*', start=None, end=None) # '*'第一次出现位置
# 判断是否存在
if(x.find != -1):
# code
index方法如果没找到,则返回ValueError
rindex是返回最后一次出现的index
x.index('*', start=None, end=None) # '*'第一次出现位置
# 应该存在,否则报错
try:
x.index()
except:
# code
3.8 字符串出现次数 count
x.count('*', start=None, end=None) # '*'出现次数
3.9 字符串前后缀 startswith endswith
boolen = x.startswith ('ar', start=None, end=None) # 是否以'ar'开头
boolen = x.endswith('txt', start=None, end=None) # 是否以'txt'结尾
3.10 字符串格式化 format
x = '我叫{0},年龄{1}'.format('小明',18)
y = '我叫{name},年龄{age}'.format(name = '小明', age = 18)
>>>x = '我叫小明,年龄18'
>>>y = '我叫小明,年龄18'
3.11 字符串大小写转换
x = ‘I love you, I LOVE YOU’
# 句首字母大写
y1 = x.capitalize() # y1='I love you, i love you'
# 词首字母大写
y2 = x.title() # y2='I Love You, I Love You'
# 全大写
y3 = x.upper() # y3='I LOVE YOU, I LOVE YOU'
# 全小写
y4 = x.lower() # y4='i love you, i love you'
# 大小写对换
y5 = x.swapcase() # y5='i LOVE YOU, i love you'
3.12 字符串去除收尾信息 strip
x = '*I*love*you*'
y1= x.strip('*') # y1='I*love*you'
y2= x.lstrip('*') # y2='I*love*you*'
y3= x.rstrip('*') # y3='*I*love*you'
3.13 字符串填充首尾信息 center, ljust
x = 'Love'
y1= x.center(10, '*') # y1='***Love***'
y2= x.ljust(10, '*') # y2='Love******'
y3= x.rjust(10, '*') # y3='******Love'
4 特殊字符串
4.1 raw字符串
raw字符串是不使用反斜杠\
转义功能的字符串,用r
表示
通常用于表示Window下的路径或者正则表达式
a = r'C:\Windows'
b = 'C:\\Windows'
a is b
4.2 format字符串
format字符串是字符串格式化format方法的简化形式,用f
表示
name = '小明'
age = 16
a = f'{name}今年{age}岁'
print(a) # 小明今年16岁
format字符串允许使用函数:
name = '小明'
age = 16.0
a = f'{name}今年{int(age)}岁'
print(a) # 小明今年16岁