Python学习手册——第二部分 类型和运算(1)之字符串

语言: CN / TW / HK

Python全景

1.程序由模块构成。

2.模块包含语句。

3.语句包含表达式。

4.表达式建立并处理对象。

在python中 数据 是以 对象 的形式出现的!!!

为什么使用内置类型

  • 内置对象使程序更容易编写
  • 内置对象往往比定制的数据结构更有效率
  • 内置对象是语言的标准的一部分
    在解决问题的时候python不需要像C和C++先去声明数据的类型,python会自己识别类型。

python的核心数据类型

python中没有类型声明,根据表达式的语法决定创建和使用对象的类型。

(在python的语言内部已经高效创建了)

但是一旦创建了一个对象,它就和操作集合 绑定 了只可以对字符串进行字符串相关的操作,对列表进行列表相关的操作。

对应的类型有其相关的操作方式。

数字类型

包括的类型有:整数,浮点数,虚数,分子分母,集合等。

其数学运算的符号:加号( + )代表加法,减号( - )代表减法,星号( * )表示乘法,双星号( ** )表示乘方。

浮点数会遇到的两种类型:代码形式 repr ,用户友好形式 str 。后者可以用 print 语句进行实现。

数字中的额外工具包

math包

需要用户在引用该包之后再进行使用: import math

math.pi 是打印Π的值。 math.sqrt() 是对括号里的数字进行开根号处理

randow包

也是需要先进行引入 import random

random.random() 是随机数字生成器, random.choice([]) 是随机选择器

[] 是列表的创建用的语法,后面会详细介绍列表。

字符串类型

字符串是用来记录文本信息的,它是一个对象的 有序集合 (从左到右)。字符串是单个字符的字符串的 序列

字符串序列的操作

可以看到索引是从0开始的。这个会有清晰的解释。

python支持反向索引

所以我们可以将 spam 这个字符串看成是这样的 pamspam 可以将s看成是坐标轴的原点,所以其索引时从0开始。

当我们只想输出字符串中的一些我们想要的数据时候,可以对字符串进行切片处理

一般形式为X[I:J](但是不会包括J的值)

在使用简便切片时,牢记左边界默认为0,并且右边界默认为分片序列的长度。

值得一提的是 S[-1:] 是不成立的会输出 输出空的值,因为字符串是从0开始向左向右的。从中间到两边。

字符串的不可变性

意思就是在我们创建一个字符串后,我们不能直接对字符串中的字符进行修改,如果我们修改字符串中的字符,我们可以通过建立一个新的字符串,并以同一个变量名对其进行赋值。 核心类型中,数字、字符串和元组是不可变的;列表和字典不是这样(它们可以完全自由地改变)

类型的特定方法

目前我们学习过的每一个字符串操作都是一个真正的序列操作。这些不止于用于字符串,包括列表和元组。但是字符串有 特殊 的操作方法:

S.find('pa') find这个方法是用来对字符串进行查找操作的。但是它只返回寻找的第一个字符的偏移量(也就是位置)。

S.replace('pa','XYZ') replace方法是用来替换字符的。前提是该字符串有需要被替换的字符,所以还具有全局搜索的任务。

line.split(',') 是字符串在遇到字符 , 时进行隔开。

S.upper()' 指的是全部大写。

S.isalpha() 是进行测试,测试字符串的内容。检查一个字符串中所有的字符是否都是由 字母 构成的,并且至少有1个字符。

如果,字符串中所有的字符都是 字母 ,则返回True,否则返回False. 该函数除了能判断字符串是否为英文字母外,也能判断其它语言中的字母。

\n 是换行。当我们需要去掉字符串中的所有空格时 line.rstrip()

格式化

格式化的细讲: python字符串的格式化细讲

在序列中的 操作 都是相通的,但是 方法 却是不相同的。

简明的法则:可作用于多种类型的通用型操作都是以 内置函数或表达式 的形式出现的[例如,len(X),X[0]],但是类型特定的操作是以 方法调用 的形式出现的[例如,aString.upper()]。

寻求帮助###

调用内置的dir函数,将会返回一个列表,其中包含了对象的所有属性。

以双下划线开头并结尾的变量名是用来表示Python实现细节的命名模式。而这个列表中没有下划线的属性是字符串对象能够调用的方法。

但是 dir(S) 只是给出了所有的方法的名字,要查询它们是做什么的,你可以将其传递给help函数。

在使用时要记得先创建一个字符串,这样才能够有所显示,不然会出现未定义的情况。

编写字符串的其他方法###

可以在字符串中间插入转义字符 \n 空一行。 \t 空一个tab键。 \0 是中止字符串。

可以看 \n``\t``\o 是包含在字符内的。计入字符长度。

ord()函数主要用来返回对应字符的ascii码

Python允许字符串包括在单引号或双引号中(它们代表着相同的东西),也允许在三个引号(单引号或双引号)中包括多行字符串常量。三个引号时,所有行都合并在一起。

可以看到输出结果时,换行处,python会自动添加换行符

模式匹配

字符串对象的方法能够支持基于模式的文本处理。

模式匹配的定义:数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。在python中的实现需要两个步骤:1,引入re模块。2,编写相应代码

跟着 零个或几个 制表符或空格 ,对应的代码是 [ \t]*(.*) 。认真理解加粗部分。有一个需要注意的地方,如果想用这种方法存放两个组不能直接用 [ \t]*(.*)[ \t]*(.*) 。这会使第二个组为空。

但是如果在两个[ \t] (. )中间添加空格,可以解决这个问题

这可能是转义字符引起的问题。

下面这种情况,直接用 / 当分组标准就没有问题:

print(match.groups()) 把所有的部分都输出。

print(match.group(0)) 按照字符串进行输出。

第二行就是`print(match.group(0))'的结果。