首页 > 编程笔记 > Python笔记

Python字符串及用法详解

字符串是由数字、字母、下画线组成的一串字符,在编程语言中表示文本的数据类型。在 Python 2.X 中,普通字符串是以 8 位 ASCII 码进行存储的,而 Unicode 字符串则以 16 位 Unicode 编码存储,这样能够表示更多的字符集,使用时需要在字符串前面加上前缀 u。在 Python 3.X 中所有的字符串都使用 Unicode 编码存储。

声明字符串可以使用单引号'或双引号",Python 中典型的字符串赋值语句如下:

str='你好,Python'


Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用的。要获取字符串中的一部分,可以使用中括号[ ]来截取字符串,例如:

string='Hello world'
print(string[0:5])

上述代码的运行结果如下所示:

>>> string='Hello world'
>>> print(string[0:5])
Hello


字符串支持截取、连接、重复输出等操作,Python 中字符串支持的操作运算符如表 1 所示。

表 1:Python 中字符串支持的操作运算符
运算符 描述
+ 字符串连接,例如 Hello+world 输出 Helloworld
* 重复输出字符串,例如 Hello*2 输出HelloHello
[] 通过下标获取字符串中的单个字符
[ : ] 获取字符串的一部分,遵循左闭右开原则,例如 str[0:2] 不包含第 3 个字符
In 成员运算符,如果字符串中包含给定的字符则返回 True
not in 成员运算符,如果字符串中不包含给定的字符则返回 True
r/R 原始字符串,所有的字符串都直接按照字面的意思来使用
% 格式化字符串

在字符串中使用特殊字符需要用到转义字符,Python 使用反斜杠“\”对字符进行转义。Python 中用于转义的字符如表 2 所示。

表 2:Python 中用于转义的字符
转义字符 描述
\ 在行尾用作续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(删除)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其他的字符以普通格式输出

Python支持格式化输出字符串,目的是将需要输出的字符串按照预先设定的格式显示。例如:

print("%s今年%d岁了!" %('小明', 10))

上述代码的运行结果如下所示:

>>> print("%s今年%d岁了!" %('小明', 10))
小明今年10岁了


Python 中用于格式化输出字符串的符号共有 13 个,如表 3 所示。

表 3:Python 中用于格式化输出字符串的符号
符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整数
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f 和 %e 的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

与 PHP 语言类似,Python 也提供了很多字符串相关操作的函数,常用的字符串函数如表 4 所示。

表 4:Python 常用的字符串函数
函数 描述
title() 返回将原字符串中单词首字母大写的新字符串
istitle 判断字符串中的单词首字母是否大写
capitalize() 返回将整个字符串的首字母大写的新字符串
lower()、upper() 返回字符串的小写、大写后的新字符串

(续表)
函数 描述
swapcase() 返回字符串的大小写互换后的新字符串
islower()、isupper() 判断字符串是否全部为小写、大写
strip()、lstrip()、rstrip() 删除字符串首尾、左部或右部的空白,空白包括空格、制表符、换行符等
ljust()、rjust()、center() 打印指定数目的字符,若字符串本身长度不足,则在其左部、右部或者两端用指定的字符补齐
startswith()、endswith() 判断原字符串是否以指定的字符串开始或结束
isnumeric()、isdigit()、isdecimal() 判断字符串是否为数字、整数、十进制数字
find()、rfind() 在字符串中查找指定字符串第一次出现的位置,方向分别为从左和从右
split() 按照指定的字符将字符串分割成词,并返回列表
splitlines() 按照换行符将文本分割成行
count() 统计指定字符串在整个字符串中出现的次数
format() 用指定的参数格式化原字符串中的占位符

上述字符串函数的示例代码如下:

msg="this is a test STRING.\n"
msg.title()
msg.capitalize()
msg.istitle()
msg.title().istitle()
msg.lower()
msg.upper()
msg.swapcase()
msg.islower()
msg.isupper()
msg.strip()
msg.lstrip()
msg.rstrip()
msg.ljust(20, '=')
msg.rjust(20, '=')
msg.center(20,  '=')
msg.startswith('th')
msg.endswith('ING.')
'111'.isnumeric()
'111'.isdigit()
'111'.isdecimal()
msg.find('is')
msg.rfind('is')
msg.split(' ')
msg.count('t')

上述代码的运行结果如下所示:

'This is a test string.\n'
>>> msg.title()
'This Is A Test String.\n'
>>> msg.capitalize()
'This is a test string.\n'
>>> msg.istitle()
False
>>> msg.title().istitle()
True
>>> msg.lower()
'this is a test string.\n'
>>> msg.upper()
'THIS IS A TEST STRING.\n'
>>> msg.swapcase()
'THIS IS A TEST string.\n'
>>> msg.islower()
False
>>> msg.isupper()
False
>>> msg.strip()
'this is a test STRING.'
>>> msg.lstrip()
'this is a test STRING.\n'
>>> msg.rstrip()
'this is a test STRING.'
>>> msg.ljust(20, '=')
'this is a test STRING.\n'
>>> msg.rjust(20, '=')
'this is a test STRING.\n'
>>> msg.center(20,  '=')
'this is a test STRING.\n'
>>> msg.startswith('th')
True
>>> msg.endswith('ING.')
False
>>> '111'.isnumeric()
True
>>> '111'.isdigit()
True
>>> '111'.isdecimal()
True
>>> msg.find('is')
2
>>> msg.rfind('is')
5
>>> msg.split(' ')
['this', 'is', 'a', 'test', 'STRING.\n']
>>> msg.count('t')
3

所有教程

优秀文章