Python中字符串用单引号 '
或双引号 "
括起来,使用反斜杠 \
转义特殊字符。
Python不支持单字符类型,单个字符就是长度为1的字符串。
Python3中,所有的字符串都是Unicode字符串。
创建字符串
var1 = 'Hello World!'
var2 = "Neuedu"
使用字符串
- 访问单个字符,使用
变量 [ 索引值 ]
- 截取子串,使用
变量 [ 头下标 : 尾下标 ]
- 重复字符串,使用
变量 * 次数
- 连接字符串,使用
变量 + 变量 [ + 变量 ... ]
说明:
- 使用索引值可以访问字符串中的单个字符,索引值从
0 ~ length-1
,超出范围会报错。- 使用头下标和尾下标可以截取部分字符串,范围是
头下标 ~ 尾下标-1
,超出范围返回空串。
str = 'Neuedu'
>>> print (str) # 所有字符串
Neuedu
>>> print (str[:]) # 所有字符串
Neuedu
>>> print (str[0]) # 第1个字符
N
>>> print (str[-1]) # 倒数第1个字符
u
>>> print (str[2:5]) # 第3个 ~ 第5个字符
ued
>>> print (str[2:]) # 第3个 ~ 所有字符
uedu
>>> print (str[:3]) # 第1个 ~ 第3个字符
Neu
>>> print (str[0:-1]) # 第1个 ~ 倒数第2个字符
Neued
>>> print (str[-1:-2]) # 空字符
>>> print (str[-4:-2]) # 倒数第4个 ~ 倒数第3个字符
ue
>>> print (str * 2) # 字符串重复两次
NeueduNeuedu
>>> print (str + "TEST") # 连接字符串
NeueduTEST
使用反斜杠 \
转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个r
,表示原始字符串
>>> print('XXX\nYYY')
XXX
YYY
>>> print(r'XXX\nYYY')
XXX\nYYY
>>>
注意:
- 字符串不能改变,向一个索引位置赋值,比如
str[2] = 'U'
会导致错误
>>> str = 'Neuedu'
>>> str[2] = 'U'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
字符串运算符
a = 'Hello' b = 'Python'
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | a + b 输出结果: HelloPython |
* | 重复输出字符串 | a*2 输出结果:HelloHello |
in | 成员运算符 字符串中包含给定的字符返回 True |
'H' in a 输出结果 True |
not in | 成员运算符 字符串中不包含给定的字符返回 True |
'M' not in a 输出结果 True |
字符串格式化
print("格式串" % 变量1)
print("格式串" % (变量1, 变量2...))
带有占位符的字符串称为 格式串
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
%e | 科学计数法表示浮点数 |
%% | 输出 %
|
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
在占位符中使用数字限制位宽,位数不足时用空格(默认)或
0
进行填充
>>> "我的学号是 %06d" % 9527
'我的学号是 009527'
>>> "苹果单价 %.02f 元/斤" % 5.123
'苹果单价 5.12 元/斤'
>>> "购买 %.03f 斤" % 4.5
'购买 4.500 斤'
>>> "数据比例是 %.02f%%" % 10
'数据比例是 10.00%'
>>> "数据比例是 %5.2f" % 1.2345
'数据比例是 1.23'
>>> "数据比例是 %05.2f" % 1.2345
'数据比例是 01.23'
使用三引号 '''
允许一个字符串跨行、包含换行符、制表符以及其他特殊字符。
>>> para_str = """这是一个多行字符串的实例
... 多行字符串可以使用制表符TAB ( \t )。
... 也可以使用换行符 [ \n ]。
... """
>>> print (para_str)
这是一个多行字符串的实例
多行字符串可以使用制表符TAB ( )。
也可以使用换行符 [
]。
- 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
- 一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
字符串内置函数
-
len(string)
返回字符串长度
>>> len('abcdef')
6
>>> len('中文')
2
字符串对象方法
-
upper()
转换字符串中的小写字母为大写 -
lower()
转换字符串中所有大写字符为小写 -
isdigit()
如果字符串只包含数字则返回 True 否则返回 False -
join(str)
以指定字符分隔str字符串 -
split(str)
用str指定的字符来产生一个列表
>>> 'abcdef'.upper()
'ABCDEF'
>>> 'ABCDEF'.lower()
'abcdef'
>>> '12345'.isdigit()
True
>>> '-'.join('abcde')
'a-b-c-d-e'
>>> "this is string example".split(' ')
['this', 'is', 'string', 'example']
字符编码
- 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。
- 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为
ASCII
编码,比如大写字母A
的编码是65
,小写字母z
的编码是122
。 - 之后,为处理各自国家的文字,产生了不同的编码,中国制定了
GB2312
编码,日本用Shift_JIS
编码,韩国用Euc-kr
编码等,各种标准的冲突,使得在多语言混合的文本中经常出现乱码。 - 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
-
ASCII
编码是1个字节,而Unicode
编码通常是2个字节。 - 为了节省空间,出现了
UTF-8
编码。UTF-8
根据不同字符编码成1-6个字节,英文字母占1个字节,汉字通常占3个字节,生僻字符占4-6个字节。
字符 | ASCII | Unicode | UTF-8 |
---|---|---|---|
A | 01000001 | 00000000 01000001 | 01000001 |
中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
- end -