字符串编码:Unicode
ord()用于将字符转换为Unicode 码
chr()用于将Unicode 码转换为字符
Eg:
>>> ord("高")
>>> chr("39640")
39640
'高'
字符串定义:单双引号都可定义(三连续单/双引号可进行多行输入)
转义字符:
字符串拼接:
1. 可以使用+将多个字符串拼接起来。
(1) 如果+两边都是字符串,则拼接。(效率上join()更快)
(2) 如果+两边都是数字,则加法运算。
(3) 如果+两边类型不同,则抛出异常。
字符串复制:
使用*可以实现字符串复制。
不换行打印:end=""
print("abc",end="")
print("def")
abcdef
从控制台读取字符串:input()
str()实现数字转型字符串:
>>> str(3.14e2)
’314.0’
使用[]提取字符:
正向搜索:
最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1
为止。
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)
为止。
replace()实现字符串替换:
a=a.replace("改变前的字符","改变后的字符")
replace本身不改变字符串
字符串切片 slice 操作:
[起始偏移量 start:终止偏移量 end:步长 step]
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始
偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成-1。例如:
>>> "abcdefg"[3:50]
'defg'
Tip:有头没尾
split()分割和 join()合并:
a.split("分割物") 即以什么分割
>>> a = "to be or not to be"
>>> a.split('be')
"'to ', ' or not to ', ''
a.join("合并物") 即以什么合并
>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)
'sxt*sxt100*sxt200'
字符串驻留机制:就是合法标识符会缓存在同一位置
>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False
常用查找方法:
len(a) 字符串长度
a.startswith('') 以指定字符串开头
a.endswith('') 以指定字符串结尾
a.find('') 第一次出现指定字符串的位置
a.rfind('') 最后一次出现指定字符串的位置
a.count("") 指定字符串出现了几次
a.isalnum() 所有字符全是字母或数字
去除首尾信息:
a.strip("指定字符")去除左右两边指定字符
a.lstrip("指定字符")去除左边指定字符
a.rstrip("指定字符")去除右边指定字符
大小写转换:
a.capitalize() 产生新的字符串,首字母大写
a.title() 产生新的字符串,每个单词都首字母大写
a.upper() 产生新的字符串,所有字符全转成大写
a.lower() 产生新的字符串,所有字符全转成小写
a.swapcase() 产生新的,所有字母大小写转换
其他方法:
isalnum() 是否为字母或数字
isalpha() 检测字符串是否只由字母组成(含汉字)。
isdigit() 检测字符串是否只由数字组成。
isspace() 检测是否为空白符
isupper() 是否为大写字母
islower() 是否为小写字母
format()基本用法:
>>> a = "名字是:{name},年龄是:{age}"
>>> a.format(name="giaohu",age=18)
'名字是:giaohu,年龄是:18'
填充与对齐:
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
>>> "我是{name},我喜欢数字{num:*^8}".format(name="giaohu",num="666")
'我是giaohu,我喜欢数字**666***'
数字格式化:
可变字符串: io.StringIO()
import io
s="Hello,world?"
sio=io.StringIO(s)
sio.seek(11)
sio.write("!")
s=sio.getvalue()
print(s)
'Hello,world!'