python3 第十一章 - 数据类型之str(字符串)

栏目: Python · 发布时间: 8年前

内容简介:python3 第十一章 - 数据类型之str(字符串)

字符串是 Python 中最常用的数据类型,我们可以使用引号('或")来创建字符串,例如:

name = 'roy'
sex = '男'

1、访问字符串中的值

Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串,如下实例:

name = 'roy'
sex = '男'
say = 'Hello world'


print("name[1]:", name[1])

以上代码,输出:

name[1]: o

name[1],方括号中的数字,表示访问字符串name的第几个字符。

我们也可以指定一个区间:

name = 'roy'
sex = '男'
say = 'Hello world'

print("say[2:8]:", say[2:8])

以上代码,输出:

say[2:8]: llo wo

say[2:8]表示,读取say中的第2位(含)到第8位(不含)。

改进代码:

say = 'Hello world'
print("say[:8]:", say[:8])

表示,从第0位(含)开始,截取至第8位(不含)。以上代码,输出:

say[:8]: Hello wo

还可以改为这样:

say = 'Hello world'
print("say[2:]:", say[2:])

表示,从第2位(含)开始,截取至字符串的最后面。以上代码,输出:

say[2:]: llo world

你甚至,还可以改为这样:

say = 'Hello world'
print("say[:]:", say[:])

表示,完整的截取字符串。以上代码,输出:

say[:]: Hello world

如果截取开始位置、结束位置为负数,会是什么情况?

say = 'Hello world'
print("say[:-1]:", say[:-1])
print("say[-2:]:", say[-2:])

以上代码,输出:

say[:-1]: Hello worl
say[-2:]: ld

如果为负数,默认从尾部某一位置,开始向后截取

截取的这一部分 name[1] 也是字符串,我们可以用之前提到的 type() 函数来验证:

name = 'roy'
print(type(name[1]))

以上代码,输出:

<class 'str'>

2、字符串运算符

字符串可以相加,相加的结果是: 加数 追加到 被加数 后面组成新的字符串

name = 'roy'
sex = '男'
print(name + sex)

以上代码,输出:

roy男

详细的运算符使用,下表实例变量a值为字符串 "Hello",b变量值为 "Python":

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True H in a 输出结果 1
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True M not in a 输出结果 1
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print r'\n' prints \n 和 print R'\n' prints \n
% 格式字符串 请继续往下看。

实例:

a = "Hello"
b = "Python"

print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])

if("H" in a):
    print("H 在变量 a 中")
else:
    print("H 不在变量 a 中")

if("M" not in a):
    print("M 不在变量 a 中")
else:
    print("M 在变量 a 中")

print(r'\n')
print(R'\n')

以上代码,输出:

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

3、转义字符

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

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

4、字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

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

以上代码,输出:

我叫 小明 今年 10 岁!

python字符串格式化符号:

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

用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

还可以用格式化字符串的函数 str.format(),对字符串进行格式化,这个会在后面的内置函数章节里详细讨论。

5、三引号

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下

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)
''')

6、Unicode 字符串

在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u

在Python3中,所有的字符串都是Unicode字符串。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

Developing Large Web Applications

Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99

As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具