最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

4 python基础

IT圈 admin 2浏览 0评论

4 python基础

下面的介绍来自基于arcgis pro的python脚本一书的第四章,介绍的不是特别详细,而且我觉得很多内容也是废话,就做了很多删减。关于python,菜鸟教程等有很多介绍。

目录

4.1 介绍

4.2 查找Python文档与资源

4.3 数据类型与结构

4.4 数字

4.5 变量和命名

4.6 statements 和 expressions

4.7 字符串

4.8 列表lists

4.9 对象objects

4.10 函数functions

4.11 方法methods

4.12 字符串的处理

4.13 打印和字符串格式化

4.14 布尔逻辑值 True False

4.15 列表的使用


4.1 介绍

本章涵盖Python语言的基础知识,包括数据类型和数据结构、变量、关键字、语句和表达式、方法、函数和模块的使用。 这些元素构成了用Python编写代码的基本语法。 本章的第二部分涉及控制工作流,包括条件语句、分支和循环的使用。 这些结构是ArcGIS Pro地理处理脚本的重要元素,是批处理操作的基础。 本章的第三部分专门介绍编写脚本的最佳实践,包括命名约定、代码组织和提供注释。

4.2 查找Python文档与资源

启动IDLE,从上面的菜单中,单击帮助>Python文档。Python手册包括安装在计算机上的Python版本的完整文档。同样的Python文档也可以在网站上找到.您将发现各种Python版本的多个文档版本。

文档中内容太多了, 很多东西根本用不到,感觉也看不完。咱们对Python 基础有一个了解就行。

4.3 数据类型与结构

Python使用几种不同的数据类型,包括字符串、数字、布尔值、列表、元组、字典等等。对象的数据类型决定了它可以拥有什么类型的值,以及可以对对象执行什么操作。字符串值由字符组成,字符可以包括字母、数字或其他类型的字符。有两种数字数据类型:整数(整数)和浮点数,或浮点数(小数)。布尔值只能包含True或False值。列表、元组和字典是由数据元素集合组成的更复杂的数据类型。

有些数据类型可以包含多个值,这些值被称为数据结构。数据结构是以某种有意义的方式构造的元素的集合,例如按顺序编号的元素。Python中最基本的数据结构是序列,其中每个元素都分配了一个数字或索引。字符串、列表和元组都是序列的例子。由于序列具有相同的固有数据结构,因此可以对任何类型的序列执行某些操作。字符串、数字和元组是不可变的,这意味着您不能修改它们,只能用新值替换它们。列表和字典是可变的,这意味着可以修改数据元素。

4.4 数字

​这一部分主要是运算符,需要注意/是除,//是除后并取整,取证的规则为正值向下取整,这个可以自己输入一些数字去计算一下,看一下规律。

*表示乘号,**表示幂次。

4.5 变量和命名

Python脚本使用变量来存储信息。 变量基本上是代表或引用一个值的名称。 您也可以将其视为存储值的容器。这里的变量和C语言等的意义感觉没啥区别。建议在运算符周围使用一个空格,例如,x = 17,而不是x=17。空格提高了代码的易读性。python和matlab一样,不用声明变量,可以直接给变量赋值。

可以在同一行分配多个变量,从而使您的脚本保持紧凑:例如 x, y, z = 1, 2, 3。

有时您必须在脚本中使用变量,但您可能事先不知道该值将是什么。在这种情况下,可以创建变量,而无需为其赋值。这样做有两种选择。第一个选项创建一个空字符串:k = ""。(引号之间没有空格)第二种是:p=None,使用type()函数检查数据类型,则该变量的类型为NoneType,但这仅仅意味着该变量没有值。

一些命名规则:

变量名只能由字母、数字和下划线组成。不允许使用空格或其他特殊字符。

变量名不能以数字开头。因此,var3是一个有效的变量名,但3var不是。

Python关键字不能用作变量名。关键字包括if和try等语句。在本章后面,您将看到更多关键字,以及如何在Python中查看所有关键字。

Python函数不应用作变量名。这包括print()和type()等函数。虽然将函数用作变量名不会立即产生错误,但如果在同一脚本中使用该函数,则会干扰函数的正确使用。

变量名区分大小写。因此,var3和var3是两个不同的变量。

还有一些命名的原则建议:

使用描述性名称。提前考虑变量将帮助您编写易于理解的代码。它还可以帮助您记住变量的含义。例如,一个名为“count”的变量比一个名为“c”的变量更有意义。遵循约定。大多数编程语言都有特定的传统,Python有一个官方的Python代码风格指南(PEP 8)。变量名的建议样式是使用简短的、全小写的名称,并根据易读性的需要使用下划线(_)分隔单词。避免使用下划线作为第一个字母,因为这个符号在Python中有特殊意义。完整的风格指南可以在.

保持简短。虽然长变量名在技术上是可以接受的,但为什么要在光栅数据集中称变量为单元格数?冗长的名字会增加拼写错误的几率,使代码更难阅读。

避免混淆。一般来说,避免在变量名中使用以下字母:小写字母l、大写字母I和大写字母O。前两个字母彼此相似,数字1相似,第三个字母看起来像数字0。

4.6 statements 和 expressions

有了变量之后,就可以使用表达式与语句。表达式是一个值,简单表达式是使用运算符和函数从文本值构建的。更复杂的表达式可以通过组合更简单的表达式来创建。表达式也可以包含变量。另一方面,语句是告诉计算机做某事的指令。这可以包括通过赋值、将值打印到屏幕、导入模块和许多其他操作来更改变量的值。我把表达式与语句就当作代码来理解的。但是两者是有部分区别的。例 2 17是一个表达式,会直接输出结果。x=2*17是一个语句,需要进行print。

4.7 字符串

字符串是最重要的数据类型之一。由引号包围的一组字符称为字符串文字,或简称字符串。当你在第二章写代码打印(“Hello World”)时,你已经看到了一个例子。可以通过为字符串变量指定字符串文字来创建字符串变量。单引号与双引号均可,但必须成对使用。

可以使用+直接连接字符串。可以使用str函数转数字为strings,这和matlab里面的num2str等其他一样的使用。在以年份等表示为文件名时,可能会将数字转str,就使用了str函数。

python使用Unicode字符串,所以可以使用不同的语言。Python中可以使用其他形式的编码,但必须在脚本开头的注释中指定。

#coding=utf-8

另外可以使用转义序列以Unicode写入特定字符。例如,Unicode 0394用于希腊大写字母delta:

4.8 列表lists

列表由一系列项目组成,这些项目被中括号 [ ] 包围”,项目之间用逗号分隔。项目本身可以由数字、字符串或其他几种数据类型组成,包括列表。一个列表中的所有项目通常都是相同的数据类型,但不是必需的。在地理处理脚本中经常使用列表。例如,可能需要创建工作空间中所有要素类的列表,并对列表中的所有要素类执行操作。

建立列表的方法1:直接输入所有的项目,列表内的项目用逗号隔开,逗号后面最好有一个空格。

列表内容也可以是字符串等,并使用print()打印。列表是有序的,在打印时,也遵守列表顺序。

4.9 对象objects

Python是一种面向对象编程语言,Python中的一切都是对象。每个对象都有以下内容:(1)一个值;(2)标识,它是唯一的标识符;(3)类型,即对象可以保存的值。

上图语句创建了对象(name)和对象的值(Paul)。该对象还有一个唯一的标识符,该标识符因所使用的特定计算机而异。可以使用id()函数获取此唯一标识符。

唯一标识符由计算机提供,用于跟踪对象(及其值和属性)。对象的类型,可以使用type()函数确定。

python中的变量是动态的,变量的对象类型由分配给它的值的性质决定,在C等中,必须首先声明变量(并给定一个类型)再赋值,变量类型一开始就固定了。

可以cast(强制转换、硬转换)对象的类型,以下图为例。

有时候一些错误就发生在cast的时候,比如从包含 “2020年5月” 字符格式提取年份闭并转换为int格式,2020可以转为int,但是 年 这个汉字是没有办法转为INT格式的。

4.10 函数functions

python函数的结构与matlab、R语言感觉大同小异,也是函数名加参数组成。

Python 2 使用 print 语句和 print() 函数,但在 Python 3 中您只能使用 print() 函数。 由于 ArcGIS Pro 仅适用于 Python 3,因此您必须使用 print() 函数。

Python包含了大量内置函数,print()、str()、type()、pow()等。可以 使用语句:dir(__builtins__) 查看内置函数。

dir() 函数返回指定对象的所有属性和方法。 在这个例子中,builtins 是一个包含所有内置函数的模块,dir(__builtins__) 返回这些函数的列表。 如果首先使用 import builtins 导入模块,还可以使用 dir(builtins)。一旦确定了要使用的函数,可能需要查看函数的描述和语法。 此描述存储在文档字符串或文档字符串中。 您可以使用 __doc__ 属性查看文档字符串。 例如:print(pow.__doc__)。在此示例中,交互式 Python 解释器不需要 print() 函数,但它提供了更好的输出格式。这里和help函数功能类似,help(pow)。

4.11 方法methods

方法就像函数。 方法是与对象(例如,数字、字符串或列表)耦合的函数。 使用方法如下:

<object>.<method>(<arguments>)

这种方法称为点表示法,点表示法在面向对象编程中广泛使用。 它表示点之后的内容属于点之前的内容。在这种情况下,方法属于对象。

方法不限于字符串——许多 Python 的内置数据类型都有关联的方法,并且在处理 Python 脚本中的对象时被广泛使用。 会在后面学习到,这个很容易理解。

4.12 字符串的处理

lower方法返回字符串的小写;upper方法返回大写的字符串;title返回首字母大小的字符串(标题格式);

字符串(和其他Python序列,如列表)有一个索引定位系统,它使用括号括起来的一系列值。 字符串中的每个字符都分配有一个索引号。Python是一种从零开始的语言,这意味着序列中的第一个字符从索引零[0]开始。 空格的计数与任何其他字符一样。您可以使用负索引号从末尾开始计数。 列表中的最后一项是索引 -1。 这使得在不知道确切计数的情况下获得最后一项成为可能。

同样可以使用索引来取字符串的子集,例如:

>>> mystring = "Geographic Information Systems"

>>> mystring[11:22]

'Information'

>>> mystring[11:]

'Information Systems'

在上面的例子中,索引11表示从第十二个字符开始提取第一个字符,索引22表示第23个字符为第一个不提取的字符。这和matlab等用法相同,很容易理解。

find()方法标识一个子字符串,并在找到该字符串时返回最左边的索引号。找不到这个字符串,返回-1。

>>> mystring = "Geographic Information Systems"
>>> mystring.find("Info") 
11 
>>> mystring.find("info") 
-1

in关键字类似于find()方法,但返回布尔值True或False,用于查询子串在不在字符串中。方法join()用于连接列表中的元素。

>>> list_gis = ["Geographic", "Information", "Systems"]

>>> string_gis = " "

>>> string_gis.join(list_gis)

'Geographic Information Systems'

strip方法允许使用任何字符进行分割字符串。

>>> pythonstring = "Geoprocessing using Python scripts"

>>> pythonlist = pythonstring.split(" ")

>>> pythonlist ['Geoprocessing', 'using', 'Python', 'scripts']

strip是另一种方法,从字符串中删除字符,但是strip() 方法不是特定的:它从字符串的开头或结尾删除任何字符,无论字符在参数中列出的顺序如何,也不管是否所有字符都包含在任一端 的字符串。

>>> mytext = "Commenting scripts is good"

>>> mytext.strip("Cdo")

'mmenting scripts is g'

lstrip() 和 rstrip() 方法删除字符串的左侧或右侧,提供了更多的控制。

>>> mytext = "Commenting scripts is good"

>>> mytext.rstrip("Cdo")

'Commenting scripts is g'

在没有任何参数的情况下调用其中一个 strip 方法会删除前导或尾随空格,在编码中也称为空格。 此方法对于清理可能已在另一个程序中格式化的字符串很有用。 考虑以下示例:

>>> white = " this is my text "

>>> white.strip()

'this is my text'

replace()用另一个子字符串替换特定子字符串的所有匹配项。

>>> mygis = "Geographic Information Systems"

>>> mygis.replace("Systems", "Science")

'Geographic Information Science'

replace() 方法还可用于通过用空字符串 (" ") 替换子字符串来从文件名中删除文件扩展名。 这种方法比 strip() 方法更具体,因为它会在任何出现的地方删除特定的子字符串,然后替换它。

>>> myfile = "streams.shp"

>>> myfile.replace(".shp", "")

'streams'

第6章介绍了为典型的GIS数据集删除文件扩展名的其他更可靠的方法。

4.13 打印和字符串格式化

字符串格式化有很多方式,一方面可以使用print()格式化:

>>> temp = 100

>>> print("The temperature is " + str(temp) + " degrees")

The temperature is 100 degrees

最经常使用的是format方法:

>>> temp = 100

>>> print("The temperature is {0} degrees".format(temp))

The temperature is 100 degrees

在本例中,{0}是一个替换字段,由大括号{}包围的索引号组成。大括号中未包含的任何内容都被视为文字。替换字段中的值被format()方法的参数替换,在本例中,是变量temp的值。但索引不一定要写,还可以给多个字符进行替换。

>>> username = "Paul"

>>> password = "surf$&9*"

>>> print("{}'s password is {}".format(username, password))

Paul's password is surf$&9*

另外一种方式是使用%进行格式化,这和C语言一样了。%s 字符串、%i表示整数,%d表示小数。>>> username = "Paul"

>>> password = "surf$&9*"

>>> print("%s's password is %s" %(username, password))

Paul's password is surf$&9*

还有一种更新的方法来格式化字符串,称为f-strings。F字符串也称为“格式化字符串文字”。 它们是以字母f为前缀的字符串字面量,包含大括号中的表达式。 这些表达式在运行时被它们的值替换。>>> temp = 100

>>> print(f"The temperature is {temp} degrees")

The temperature is 100 degrees

推荐首选使用format() 方法或f字符串

4.14 布尔逻辑值 True False

和C语言等大同小异,只是注意True和False区分大小写,也可以使用or或and进行逻辑运算。同样注意or和and都是小写。

>>> a = True 
>>> b = False 
>>> a or b 
True

可以使用bool()函数检查值的真实性,该函数确定对象是真还是假。考虑以下示例:

>>> text = "Something" 
>>> bool(text) True 
>>> notext = "" 
>>> bool(notext)False

同时要注意,除0以外的数值的bool值为True,0为False

>>> zero = 0

>>> bool(zero)

False

使用is关键字的表达式返回布尔值时,结果取决于两个变量是否引用同一个对象,而不是它们是否具有相同的值。==用来判断是否有相同的值。

>>> var1 = [1, 2, 3]

>>> var2 = var1

>>> var1 is var2 True

>>> var1 = [1, 2, 3]

>>> var2 = [1, 2, 3]

>>> var1 is var2

False

>>> var1 == var2

True

Python 中的 None 关键字用于定义空值或根本没有值。 None 是它自己的数据类型,即 NoneType,其布尔值为False。

>>> x = None

>>> type(x) <class 'NoneType'>

>>> bool(x)

False

None 数据类型有时用于检查用户输入是否具有有效值。 但它与数字零或空字符串不同。

>>> empty = ""

>>> empty == None

False

布尔逻辑(包括本节中的关键字)广泛用于脚本中,用于评估条件并根据这些条件确定适当的操作过程。

4.15 列表的使用

实际应用中感觉列表是经常使用,在matlab中也要读取文件列表,不过matlab是以char等格式存储。后面的部分接4 python基础(2)

4 python基础

下面的介绍来自基于arcgis pro的python脚本一书的第四章,介绍的不是特别详细,而且我觉得很多内容也是废话,就做了很多删减。关于python,菜鸟教程等有很多介绍。

目录

4.1 介绍

4.2 查找Python文档与资源

4.3 数据类型与结构

4.4 数字

4.5 变量和命名

4.6 statements 和 expressions

4.7 字符串

4.8 列表lists

4.9 对象objects

4.10 函数functions

4.11 方法methods

4.12 字符串的处理

4.13 打印和字符串格式化

4.14 布尔逻辑值 True False

4.15 列表的使用


4.1 介绍

本章涵盖Python语言的基础知识,包括数据类型和数据结构、变量、关键字、语句和表达式、方法、函数和模块的使用。 这些元素构成了用Python编写代码的基本语法。 本章的第二部分涉及控制工作流,包括条件语句、分支和循环的使用。 这些结构是ArcGIS Pro地理处理脚本的重要元素,是批处理操作的基础。 本章的第三部分专门介绍编写脚本的最佳实践,包括命名约定、代码组织和提供注释。

4.2 查找Python文档与资源

启动IDLE,从上面的菜单中,单击帮助>Python文档。Python手册包括安装在计算机上的Python版本的完整文档。同样的Python文档也可以在网站上找到.您将发现各种Python版本的多个文档版本。

文档中内容太多了, 很多东西根本用不到,感觉也看不完。咱们对Python 基础有一个了解就行。

4.3 数据类型与结构

Python使用几种不同的数据类型,包括字符串、数字、布尔值、列表、元组、字典等等。对象的数据类型决定了它可以拥有什么类型的值,以及可以对对象执行什么操作。字符串值由字符组成,字符可以包括字母、数字或其他类型的字符。有两种数字数据类型:整数(整数)和浮点数,或浮点数(小数)。布尔值只能包含True或False值。列表、元组和字典是由数据元素集合组成的更复杂的数据类型。

有些数据类型可以包含多个值,这些值被称为数据结构。数据结构是以某种有意义的方式构造的元素的集合,例如按顺序编号的元素。Python中最基本的数据结构是序列,其中每个元素都分配了一个数字或索引。字符串、列表和元组都是序列的例子。由于序列具有相同的固有数据结构,因此可以对任何类型的序列执行某些操作。字符串、数字和元组是不可变的,这意味着您不能修改它们,只能用新值替换它们。列表和字典是可变的,这意味着可以修改数据元素。

4.4 数字

​这一部分主要是运算符,需要注意/是除,//是除后并取整,取证的规则为正值向下取整,这个可以自己输入一些数字去计算一下,看一下规律。

*表示乘号,**表示幂次。

4.5 变量和命名

Python脚本使用变量来存储信息。 变量基本上是代表或引用一个值的名称。 您也可以将其视为存储值的容器。这里的变量和C语言等的意义感觉没啥区别。建议在运算符周围使用一个空格,例如,x = 17,而不是x=17。空格提高了代码的易读性。python和matlab一样,不用声明变量,可以直接给变量赋值。

可以在同一行分配多个变量,从而使您的脚本保持紧凑:例如 x, y, z = 1, 2, 3。

有时您必须在脚本中使用变量,但您可能事先不知道该值将是什么。在这种情况下,可以创建变量,而无需为其赋值。这样做有两种选择。第一个选项创建一个空字符串:k = ""。(引号之间没有空格)第二种是:p=None,使用type()函数检查数据类型,则该变量的类型为NoneType,但这仅仅意味着该变量没有值。

一些命名规则:

变量名只能由字母、数字和下划线组成。不允许使用空格或其他特殊字符。

变量名不能以数字开头。因此,var3是一个有效的变量名,但3var不是。

Python关键字不能用作变量名。关键字包括if和try等语句。在本章后面,您将看到更多关键字,以及如何在Python中查看所有关键字。

Python函数不应用作变量名。这包括print()和type()等函数。虽然将函数用作变量名不会立即产生错误,但如果在同一脚本中使用该函数,则会干扰函数的正确使用。

变量名区分大小写。因此,var3和var3是两个不同的变量。

还有一些命名的原则建议:

使用描述性名称。提前考虑变量将帮助您编写易于理解的代码。它还可以帮助您记住变量的含义。例如,一个名为“count”的变量比一个名为“c”的变量更有意义。遵循约定。大多数编程语言都有特定的传统,Python有一个官方的Python代码风格指南(PEP 8)。变量名的建议样式是使用简短的、全小写的名称,并根据易读性的需要使用下划线(_)分隔单词。避免使用下划线作为第一个字母,因为这个符号在Python中有特殊意义。完整的风格指南可以在.

保持简短。虽然长变量名在技术上是可以接受的,但为什么要在光栅数据集中称变量为单元格数?冗长的名字会增加拼写错误的几率,使代码更难阅读。

避免混淆。一般来说,避免在变量名中使用以下字母:小写字母l、大写字母I和大写字母O。前两个字母彼此相似,数字1相似,第三个字母看起来像数字0。

4.6 statements 和 expressions

有了变量之后,就可以使用表达式与语句。表达式是一个值,简单表达式是使用运算符和函数从文本值构建的。更复杂的表达式可以通过组合更简单的表达式来创建。表达式也可以包含变量。另一方面,语句是告诉计算机做某事的指令。这可以包括通过赋值、将值打印到屏幕、导入模块和许多其他操作来更改变量的值。我把表达式与语句就当作代码来理解的。但是两者是有部分区别的。例 2 17是一个表达式,会直接输出结果。x=2*17是一个语句,需要进行print。

4.7 字符串

字符串是最重要的数据类型之一。由引号包围的一组字符称为字符串文字,或简称字符串。当你在第二章写代码打印(“Hello World”)时,你已经看到了一个例子。可以通过为字符串变量指定字符串文字来创建字符串变量。单引号与双引号均可,但必须成对使用。

可以使用+直接连接字符串。可以使用str函数转数字为strings,这和matlab里面的num2str等其他一样的使用。在以年份等表示为文件名时,可能会将数字转str,就使用了str函数。

python使用Unicode字符串,所以可以使用不同的语言。Python中可以使用其他形式的编码,但必须在脚本开头的注释中指定。

#coding=utf-8

另外可以使用转义序列以Unicode写入特定字符。例如,Unicode 0394用于希腊大写字母delta:

4.8 列表lists

列表由一系列项目组成,这些项目被中括号 [ ] 包围”,项目之间用逗号分隔。项目本身可以由数字、字符串或其他几种数据类型组成,包括列表。一个列表中的所有项目通常都是相同的数据类型,但不是必需的。在地理处理脚本中经常使用列表。例如,可能需要创建工作空间中所有要素类的列表,并对列表中的所有要素类执行操作。

建立列表的方法1:直接输入所有的项目,列表内的项目用逗号隔开,逗号后面最好有一个空格。

列表内容也可以是字符串等,并使用print()打印。列表是有序的,在打印时,也遵守列表顺序。

4.9 对象objects

Python是一种面向对象编程语言,Python中的一切都是对象。每个对象都有以下内容:(1)一个值;(2)标识,它是唯一的标识符;(3)类型,即对象可以保存的值。

上图语句创建了对象(name)和对象的值(Paul)。该对象还有一个唯一的标识符,该标识符因所使用的特定计算机而异。可以使用id()函数获取此唯一标识符。

唯一标识符由计算机提供,用于跟踪对象(及其值和属性)。对象的类型,可以使用type()函数确定。

python中的变量是动态的,变量的对象类型由分配给它的值的性质决定,在C等中,必须首先声明变量(并给定一个类型)再赋值,变量类型一开始就固定了。

可以cast(强制转换、硬转换)对象的类型,以下图为例。

有时候一些错误就发生在cast的时候,比如从包含 “2020年5月” 字符格式提取年份闭并转换为int格式,2020可以转为int,但是 年 这个汉字是没有办法转为INT格式的。

4.10 函数functions

python函数的结构与matlab、R语言感觉大同小异,也是函数名加参数组成。

Python 2 使用 print 语句和 print() 函数,但在 Python 3 中您只能使用 print() 函数。 由于 ArcGIS Pro 仅适用于 Python 3,因此您必须使用 print() 函数。

Python包含了大量内置函数,print()、str()、type()、pow()等。可以 使用语句:dir(__builtins__) 查看内置函数。

dir() 函数返回指定对象的所有属性和方法。 在这个例子中,builtins 是一个包含所有内置函数的模块,dir(__builtins__) 返回这些函数的列表。 如果首先使用 import builtins 导入模块,还可以使用 dir(builtins)。一旦确定了要使用的函数,可能需要查看函数的描述和语法。 此描述存储在文档字符串或文档字符串中。 您可以使用 __doc__ 属性查看文档字符串。 例如:print(pow.__doc__)。在此示例中,交互式 Python 解释器不需要 print() 函数,但它提供了更好的输出格式。这里和help函数功能类似,help(pow)。

4.11 方法methods

方法就像函数。 方法是与对象(例如,数字、字符串或列表)耦合的函数。 使用方法如下:

<object>.<method>(<arguments>)

这种方法称为点表示法,点表示法在面向对象编程中广泛使用。 它表示点之后的内容属于点之前的内容。在这种情况下,方法属于对象。

方法不限于字符串——许多 Python 的内置数据类型都有关联的方法,并且在处理 Python 脚本中的对象时被广泛使用。 会在后面学习到,这个很容易理解。

4.12 字符串的处理

lower方法返回字符串的小写;upper方法返回大写的字符串;title返回首字母大小的字符串(标题格式);

字符串(和其他Python序列,如列表)有一个索引定位系统,它使用括号括起来的一系列值。 字符串中的每个字符都分配有一个索引号。Python是一种从零开始的语言,这意味着序列中的第一个字符从索引零[0]开始。 空格的计数与任何其他字符一样。您可以使用负索引号从末尾开始计数。 列表中的最后一项是索引 -1。 这使得在不知道确切计数的情况下获得最后一项成为可能。

同样可以使用索引来取字符串的子集,例如:

>>> mystring = "Geographic Information Systems"

>>> mystring[11:22]

'Information'

>>> mystring[11:]

'Information Systems'

在上面的例子中,索引11表示从第十二个字符开始提取第一个字符,索引22表示第23个字符为第一个不提取的字符。这和matlab等用法相同,很容易理解。

find()方法标识一个子字符串,并在找到该字符串时返回最左边的索引号。找不到这个字符串,返回-1。

>>> mystring = "Geographic Information Systems"
>>> mystring.find("Info") 
11 
>>> mystring.find("info") 
-1

in关键字类似于find()方法,但返回布尔值True或False,用于查询子串在不在字符串中。方法join()用于连接列表中的元素。

>>> list_gis = ["Geographic", "Information", "Systems"]

>>> string_gis = " "

>>> string_gis.join(list_gis)

'Geographic Information Systems'

strip方法允许使用任何字符进行分割字符串。

>>> pythonstring = "Geoprocessing using Python scripts"

>>> pythonlist = pythonstring.split(" ")

>>> pythonlist ['Geoprocessing', 'using', 'Python', 'scripts']

strip是另一种方法,从字符串中删除字符,但是strip() 方法不是特定的:它从字符串的开头或结尾删除任何字符,无论字符在参数中列出的顺序如何,也不管是否所有字符都包含在任一端 的字符串。

>>> mytext = "Commenting scripts is good"

>>> mytext.strip("Cdo")

'mmenting scripts is g'

lstrip() 和 rstrip() 方法删除字符串的左侧或右侧,提供了更多的控制。

>>> mytext = "Commenting scripts is good"

>>> mytext.rstrip("Cdo")

'Commenting scripts is g'

在没有任何参数的情况下调用其中一个 strip 方法会删除前导或尾随空格,在编码中也称为空格。 此方法对于清理可能已在另一个程序中格式化的字符串很有用。 考虑以下示例:

>>> white = " this is my text "

>>> white.strip()

'this is my text'

replace()用另一个子字符串替换特定子字符串的所有匹配项。

>>> mygis = "Geographic Information Systems"

>>> mygis.replace("Systems", "Science")

'Geographic Information Science'

replace() 方法还可用于通过用空字符串 (" ") 替换子字符串来从文件名中删除文件扩展名。 这种方法比 strip() 方法更具体,因为它会在任何出现的地方删除特定的子字符串,然后替换它。

>>> myfile = "streams.shp"

>>> myfile.replace(".shp", "")

'streams'

第6章介绍了为典型的GIS数据集删除文件扩展名的其他更可靠的方法。

4.13 打印和字符串格式化

字符串格式化有很多方式,一方面可以使用print()格式化:

>>> temp = 100

>>> print("The temperature is " + str(temp) + " degrees")

The temperature is 100 degrees

最经常使用的是format方法:

>>> temp = 100

>>> print("The temperature is {0} degrees".format(temp))

The temperature is 100 degrees

在本例中,{0}是一个替换字段,由大括号{}包围的索引号组成。大括号中未包含的任何内容都被视为文字。替换字段中的值被format()方法的参数替换,在本例中,是变量temp的值。但索引不一定要写,还可以给多个字符进行替换。

>>> username = "Paul"

>>> password = "surf$&9*"

>>> print("{}'s password is {}".format(username, password))

Paul's password is surf$&9*

另外一种方式是使用%进行格式化,这和C语言一样了。%s 字符串、%i表示整数,%d表示小数。>>> username = "Paul"

>>> password = "surf$&9*"

>>> print("%s's password is %s" %(username, password))

Paul's password is surf$&9*

还有一种更新的方法来格式化字符串,称为f-strings。F字符串也称为“格式化字符串文字”。 它们是以字母f为前缀的字符串字面量,包含大括号中的表达式。 这些表达式在运行时被它们的值替换。>>> temp = 100

>>> print(f"The temperature is {temp} degrees")

The temperature is 100 degrees

推荐首选使用format() 方法或f字符串

4.14 布尔逻辑值 True False

和C语言等大同小异,只是注意True和False区分大小写,也可以使用or或and进行逻辑运算。同样注意or和and都是小写。

>>> a = True 
>>> b = False 
>>> a or b 
True

可以使用bool()函数检查值的真实性,该函数确定对象是真还是假。考虑以下示例:

>>> text = "Something" 
>>> bool(text) True 
>>> notext = "" 
>>> bool(notext)False

同时要注意,除0以外的数值的bool值为True,0为False

>>> zero = 0

>>> bool(zero)

False

使用is关键字的表达式返回布尔值时,结果取决于两个变量是否引用同一个对象,而不是它们是否具有相同的值。==用来判断是否有相同的值。

>>> var1 = [1, 2, 3]

>>> var2 = var1

>>> var1 is var2 True

>>> var1 = [1, 2, 3]

>>> var2 = [1, 2, 3]

>>> var1 is var2

False

>>> var1 == var2

True

Python 中的 None 关键字用于定义空值或根本没有值。 None 是它自己的数据类型,即 NoneType,其布尔值为False。

>>> x = None

>>> type(x) <class 'NoneType'>

>>> bool(x)

False

None 数据类型有时用于检查用户输入是否具有有效值。 但它与数字零或空字符串不同。

>>> empty = ""

>>> empty == None

False

布尔逻辑(包括本节中的关键字)广泛用于脚本中,用于评估条件并根据这些条件确定适当的操作过程。

4.15 列表的使用

实际应用中感觉列表是经常使用,在matlab中也要读取文件列表,不过matlab是以char等格式存储。后面的部分接4 python基础(2)

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论