字符串-非常高效, C语言实现, 高度优化
字符串定义
单引号
双引号
三引号--可以跨多行
单行注释: #号, 或者 选中后 Ctrl+/
字符串拼接:
+ : eg. ‘name’ + 'is' --拼接后生成新的对象
重复n次 *n eg. 'hello'*3
字符串的特性被称为Sequence(序列)
一个序列,若干个元素组成
Sequence有相同的操作
序列的特性
1.由多个元素组成
2.有编号(下标, index)
切片:
切片操作对被切对象不影响, 切出的对象新生产对象, 被切得对象是什么, 切完还是上面的对象类型
str[start:end] 取中间段, 左含右不含, 从start开始, 到end结束,但不包含end
推荐这么写: 等价 str[start:start+要切的内容长度]
str[start:] 从start开始切到字符串结束
str[:end] 从头开始,切到end-1结束
举例:
str= '11:12:11> 001 enter chatroom, level 2'
print(str[10:10+3]) ---001
print(str[-7:]) --- level 2
负下标切片用的下标也是从左到右, 左含右不含,所以如果结束下标是-1, 是取不到最后一个元素的
内置函数len() --换行2个字符
str = 'a \n b'
len(str) --5
str.swapcase(大小写转换)
str1 = 'a b C D'
print(str1.swapcase())
A B c d
字符串格式化
1. 格式化方法 %
传入多个值--元组
值的个数要一致
%s --字符串类型, 等价于str()
%d --整数 ,等价于int()
%f ---浮点数型, 小数部分自然截断, 默认6位小数 %.2f --代表小数点后面2位小数
%x-- 十六进制 0x开头是16进制 x出现字母时小写,, X 大写
%#x
%10d 十位,右对齐,不足以空格补足
%-10d 左对齐
%010d 不足以0补齐
2. format使用
是字符串的一种方法 str1.format
{}一个位置, format(值)
三种使用方法 :
1. 顺序填坑
2. 下标
print('我的名字是:{1}, 我的年龄是: {0}'.format(18,'tom'))
3. 变量
name = 'tom'
age = 18
print('我的名字是:{}, 我的年龄是: {}'.format(name,age))
三种方法不要混合使用
PYTHON3里有类似format f
name = 'tom'
age = 18
print(f'我的名字是:{name}, 我的年龄是: {age}')
t = f'我的名字是:{name}, 我的年龄是: {age}'
print(out)
指定宽度
print('我的名字是:{:10}, 我的年龄是: {}'.format('tom,18')) #此时不能再用下标来指定参数位置了。
{:10} 传入的是字符串, --左对齐,右补齐
传入的是数字, 右对齐, 左补齐
{:<10} 左对齐
{:>10} 右对齐
补零
{:>010}
{:^10} 居中对齐
print('我的名字是:{:^10}, 我的年龄是: {:^10d}'.format(name,age))
十六进制
'{:x}'.format(108)
'{:X}'.format(108)
'{:#x}'.format(108)
'{:#X}'.format(108)
'{:.2f}'.format(3.141)
%等价于 {.}
不转义:
字符串前加r ; 代表取消转义
另一种方式: \\\t
终端输入
input("") --返回的类型是字符串str
等待输入,不输入就一直等待
用户的输入以一个回车结束
用户的输入作为返回值,给程序后面使用
字符串的方法:
1. count 计算字符串中包含的多少个指定的子字符串
a = '123 123 456'
print(a.count('123')) ---2
2. startswith()
3. endswith()
4. isdigit() #判断是否都是数字
5. isalpha() #判断是否都是字母
6. .join
a =';'.join(['1','2','3']) #join()里的参数要是可迭代的
print(a) #1;2;3
a = 'ab'.join('123')
print(a) #1ab2ab3