本文最后更新于 1528 天前,其中的信息可能已经有所发展或是发生改变。
# 多行输出结果
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
1. 字符串-str
1.1 可以由单引号或双引号建立
string0 = 'string0 demo.'
string1 = "string1 demo."
print(string0, string1, sep='\n')
string0 demo.
string1 demo.
1.2 格式化字符串
将变量包含进字符串中
– % 操作符
string2 = '%s demo.' % 'string2'
string3 = 'string%d %s.' % (3, 'demo')
print(string2, string3, sep='\n')
string2 demo.
string3 demo.
- format() 见-jupyter notebook与python基础命令
1.3 print()函数
用help函数查看参数及帮助
help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
常用参数:
– sep: 间隔符,如果print()一次接收多组数据那么这两组数据之间的间隔默认是一个空格,当然我们可以通过sep
参数进行自定义。
如上例1.1中一次传入 string0, string1
, 设置间隔符是回车(\n
)。再如下例
print(1, 2, 3)
print(1, 2, 3, sep='*****')
1 2 3
1*****2*****3
- end: 终止符,默认是回车。
如下例1,第一条修改end为空,所以第二条print开始的位置就是第一条字符串再加上空字符后的位置
如下例2,第一条修改end为两个回车,所以第二条print开始的位置就是第一条字符串再加上两个回车后的位置
# 例1
print('string1', end='')
print('string2')
# 例2
print('string1', end='\n\n')
print('string2')
# 例3
print('string1', end='\n*************\n')
print('string2')
string1string2
string1
string2
string1
*************
string2
转义字符
符号 | 含义 |
---|---|
\\\ |
反斜杠 |
\' |
单引号 |
\* |
双引号 |
\n |
换行 |
\t |
横向制表符 |
\r |
回车 |
制表符可以使print
的输出文本垂直对齐
print('1\t2\t3\t')
print('100\t200\t300\t')
1 2 3
100 200 300
注意: 下面面关于字符串的函数、方法、切片等都不会改变原字符串。如果想引用作用后的则可以将其重新赋值给某个变量。
1.4 字符串常用函数
在此处先阐明函数与方法的区别(来自StackOverflow上Andrew Edgecombe的最佳答案),在后文《函数》可以见到函数的编写,在后文《类》可以见到方法(动态语言python的方法就是成员函数)
– 函数中的数据是显式传递的,而方法是隐式传递传递数据
– 方法可以操作类内部的数据(请记住,对象是类的实例化–类定义了一个数据类型,而对象是该数据类型的一个实例化)
1.4.1 查看字符串的帮助
可以通过help以及dir()(关于dir参见jupyter notebook与python基础命令)查看帮助
# 帮助文档太长,此处省略,可自行查看
help(str)
dir('aaa')
1.4.2 常用函数
- replace() 替换指定的字符串
s1 = 'abcdefg'
s1.replace('bc', 'qq')
'aqqdefg'
- len() 获取字符串长度
len('12345')
5
- int() 字符串转整型.
类似的还有float(),对应的有str()可将其他类型数据转成字符串类型
int('99')
99
- 字符与不同编码方式的数值转换
- ord(ch) 以一个字符(长度为1的字符串)作为参数,返回对应的十进制 ASCII 数值,或者 Unicode 数值
ord('a')
97
- chr(int) ord函数的配对函数,参数是整数,返回字符
chr(97)
'a'
1.5 字符串常用方法
1.5.1 大小写转换类
- your_str.title() 以类似人名格式,将首字母和内部间隔符后首字母大写
'aBC DE fgh'.title()
'Abc De Fgh'
- your_str.upper() 全部转为大写
- your_str.lower() 全部转为小写
1.5.2 去空白字符
- your_str.lstrip() 去开头空白字符
- your_str.rstrip() 去末尾空白字符
- your_str.strip() 去两头空白字符
1.5.3 拼接
- sep_str.join(your_str_list) 以 sep_str 为间隔符拼接列表里的字符串
' '.join(['a', 'b'])
gram = b'\xe2\x9d\xa6'.decode('utf-8') # 完全是为了秀: b'\xe2\x9d\xa6'是此特殊图案的字节码
gram.join(['a', 'b', 'c', '123'])
'a❦b❦c❦123'
1.5.4 拆分
- your_str.split(sep_str) 以字符串 sep_str 作为分隔符分割字符串 your_str. 结果返回包含分割后元素的列表
1.6 常用运算符
简单介绍字符串中常用的运算符及其作用
1.6.1 算数运算符
字符串只能使用下面两个:
– +
规则: str1 + str2
拼接字符串 str1
与 str2
– *
规则: strs * int_n
倍增字符串 strs
n次
如下例:
'abc' + '123'
'abc123'
'abc*' * 5
'abc*abc*abc*'
1.6.2 关系运算符
==
比较两个对象是否相等,若相等则返回True
'aassd' == 'asasd'
False
1.6.3 成员运算符
in
规则:x in y
若y包含x则返回True
not in
与上相反
'ad' in 'asadf'
True
1.6.4 身份运算符
is
判断两个标识符是不是引用自一个对象(指向同一内存地址)。x is y
相当于x == y and id(x) == id(y)
ch1 = 's'
ch2 = 's'
ch1 is ch2
True
s1 = 'asdfghs'
s2 = 'asdfghs'
s1 is s2
True
上面例子 s1
与 s2
为什么内存中指向同一地址,与python的内存机制有关。在后文《参数传递》 2.关于可变对象与不可变对象中略有说明。
s1 = 'asdfgh s'
s2 = 'asdfgh s'
s1 is s2
False
1.7 索引以及切片
strings = '123456789'
# 索引单个
strings[4] # '5'
# 从第二个元素到第五个,注意被索引的包括左端点,而不包括右端点
strings[2:5] # '345'
# 前二个元素
strings[:2] # '12'
# 后三个元素
strings[-3:] # '789'
# 从第一个元素到第八个,每两个元素取一个
strings[1:8:2] # '2468'
# 对此字符串的起始到结束区域内的进行逆序
strings[::-2] # '987654321'
# 对此字符串的后五个进行逆序,每两个取一个
strings[-5::-2] # '531'
# 第七到第二个,每间隔一个取一个
strings[7:2:-2] # '864'
# 当最后的步长是负数时,若前面两参数不是默认起始与默认结束,则起始位置应该大于结束位置
# 反例:
strings[2:7:-2] # 输出是空,正确的应该是strings[7:2:-2],这样才能输出'864'。7 > 2
评论