首页技术replace函数python python replace函数用法

replace函数python python replace函数用法

编程之家2026-05-181005次浏览

大家好,今天给各位分享replace函数python的一些知识,其中也会对python replace函数用法进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

replace函数python python replace函数用法

python编写用pow()函数计算球的体积

使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。您可以对所有记录或选中记录执行简单计算和高级计算。此外,还可以在属性表中的字段上计算面积、长度、周长和其他几何属性。以下各部分包括使用字段计算器的若干示例。使用 Python、SQL和 Arcade执行计算。

本主题着重于基于 Python的计算字段示例。要了解有关 Arcade表达式的详细信息,请参阅 ArcGIS Arcade指南。要了解有关 SQL表达式的详细信息,请参阅计算字段。

注:

Python强制将缩进作为语法的一部分。请使用两个或四个空格来定义每个逻辑级别。将语句块的开头和结尾对齐并且保持一致。

Python计算表达式字段将使用惊叹号(!!)括起。

命名变量时,请注意 Python区分大小写,因此 value不同于 Value。

replace函数python python replace函数用法

输入语句后,如果想将其写入文件,请单击导出。导入按钮将提示您查找和选择一个现有的计算文件。

简单计算

仅通过一个短表达式就可以计算出多种计算结果。

简单字符串示例

一系列 Python字符串函数均支持使用字符串,包括 capitalize、rstrip和 replace。

将 CITY_NAME字段中字符串的首字母大写。

replace函数python python replace函数用法

!CITY_NAME!.capitalize()

去掉 CITY_NAME字段中自字符串结尾起的所有空白区。

!CITY_NAME!.rstrip()

将 STATE_NAME字段中的“california”全部替换为“California”。

!STATE_NAME!.replace("california","California")

在 Python中,字符串字段中的字符可以通过索引和分割操作进行访问。索引操作将在索引位置提取字符,而分割操作则会提取一组字符。在下表中,假设!fieldname!是值为"abcde"的字符串字段。

示例

说明

结果

!fieldname![0]

第一个字符

"a"

!fieldname![-2]

倒数第二个字符

"d"

!fieldname![1:4]

第二、三和四个字符

"bcd"

Python也支持使用 format()方法的字符串格式。

将合并后的 FieldA和 FieldB以冒号分隔开。

"{}:{}".format(!FieldA!,!FieldB!)

常见 Python字符串操作

简单数学示例

Python提供了处理数字的工具。Python也支持一些数值和数学函数,包括 math、cmath、decimal、random、itertools、functools和 operator。

运算符

说明

示例

结果

x+ y

x加上 y

1.5+ 2.5

4.0

x- y

x减去 y

3.3- 2.2

1.1

x* y

x乘以 y

2.0* 2.2

4.4

x/ y

x除以 y

4.0/ 1.25

3.2

x// y

x除以 y(向下取整除法)

4.0// 1.25

3.0

x% y

x模 y

8% 3

2

-x

x的负数表达式

x= 5

-x

-5

+x

x不变

x= 5

+x

5

x** y

以 x为底,以 y为指数的幂

2** 3

8

!Rank!* 2

根据给定的半径字段计算球体的体积。

4.0/ 3.0* math.pi*!Radius!** 3

旧版本:

在 ArcGIS Pro中,使用的是 Python 3,在 ArcGIS Desktop中,使用的 Python 2。Python 2使用的是整型数学计算,这就意味着两个整型值相除将始终生成整型值(3/ 2= 1)。在 Python 3中,两个整型值相除将生成浮点型值(3/ 2= 1.5)。

Python内置函数

Python包含多个可用的内置函数,包括 max、min、round和 sum。

Python内置函数

通过字段列表计算每条记录的最大值。

max([!field1!,!field2!,!field3!])

通过字段列表计算每条记录的总和。

sum([!field1!,!field2!,!field3!])使用代码块

通过 Python表达式和代码块参数可执行以下操作:

在表达式中应用任意 Python函数。

访问地理处理函数和对象。

访问要素几何的属性。

访问新的随机值运算符。

使用 if-then-else逻辑对值进行重分类。

表达式类型

代码块

Python 3

支持 Python功能。使用 Python函数(def)表示代码块。在适当的情况下,几何属性将通过地理处理对象表示(如点对象)。

Arcade

支持 Arcade功能。

SQL

支持 SQL表达式。

执行 SQL表达式可以更好地支持使用要素服务和企业级地理数据库的计算,尤其是在性能方面。使用该表达式可以将单次请求设置为要素服务或数据库,而不必一次执行一个要素或一行的计算。

旧版本:

在 ArcGIS Desktop中,计算字段工具支持 VB、PYTHON和 PYTHON_9.3表达式类型。VB表达式类型,在某些产品中受支持,但在 64位产品中不受支持,其中包括 ArcGIS Pro。

出于相后兼容性考量,ArcGIS Pro中仍然支持 PYTHON和 PYTHON_9.3关键字,但是不会作为选择列出。使用这些关键字的 Python脚本将可继续使用。

Python 3表达式类型与旧版 PYTHON_9.3关键字的唯一区别在于 Python 3会将日期字段中的值作为 Python datetime对象返回。

注:

Python 3表达式类型与随 ArcGIS Pro安装的 Python版本无关。这只是历史上的第三个 Python相关关键字(继 PYTHON和 PYTHON_9.3之后。

各 Python函数可通过 def关键字定义,关键字后为函数名称及函数的输入参数。可编写 Python函数,使 Python函数能够接受任何数量的输入参数(也可以没有任何参数)。函数将通过 return语句返回值。函数名称可由您自行选取(不得使用空格,也不得以数字开头)。

注:

如果函数未通过 return语句显式返回值,则函数将返回 None。

注:

请牢记,Python强制要求将缩进作为语法的一部分。请使用四个空格来定义每个逻辑级别。将语句块的开头和结尾对齐并且保持一致。

代码示例-数学

在使用以下数学示例时,请假设表达式类型为 Python 3。

将字段的值四舍五入为保留两位小数。

表达式:

round(!area!, 2)

通过 math模块将米转换成英尺。以转换值为底,以 2为指数进行幂运算,然后再乘以 area。

表达式:

MetersToFeet((float(!shape.area!)))

代码块:

import math

def MetersToFeet(area):

return math.pow(3.2808, 2)* area通过 Python逻辑计算字段

可以使用 if、else和 elif语句将逻辑模式包含在代码块中。

按照字段值进行分类。

表达式:

Reclass(!WELL_YIELD!)

代码块:

def Reclass(WellYield):

if(WellYield>= 0 and WellYield<= 10):

return 1

elif(WellYield> 10 and WellYield<= 20):

return 2

elif(WellYield> 20 and WellYield<= 30):

return 3

elif(WellYield> 30):

return 4代码实例-几何

除以下代码示例外,请参阅下方的“几何单位转换”部分,以了解有关转换几何单位的详细信息。

计算某要素的面积。

表达式:

!shape.area!

计算某要素的最大 x坐标。

表达式:

!shape.extent.XMax!

计算某要素中的折点数。

表达式:

MySub(!shape!)

代码块:

def MySub(feat):

partnum= 0

# Count the number of points in the current multipart feature

partcount= feat.partCount

pntcount= 0

# Enter while loop for each part in the feature(if a singlepart

# feature, this will occur only once)

while partnum< partcount:

part= feat.getPart(partnum)

pnt= part.next()

# Enter while loop for each vertex

while pnt:

pntcount+= 1

pnt= part.next()

# If pnt is null, either the part is finished or there

# is an interior ring

if not pnt:

pnt= part.next()

partnum+= 1

return pntcount

将点要素类中每个点的 x坐标平移 100。

表达式:

shiftXCoordinate(!SHAPE!)

代码块:

def shiftXCoordinate(shape):

shiftValue= 100

point= shape.getPart(0)

point.X+= shiftValue

return point几何单位转换

几何字段的面积和长度属性可通过用@符号表示的单位类型进行修改。

面积测量单位关键字:

ACRES| ARES| HECTARES| SQUARECENTIMETERS| SQUAREDECIMETERS| SQUAREINCHES| SQUAREFEET| SQUAREKILOMETERS| SQUAREMETERS| SQUAREMILES| SQUAREMILLIMETERS| SQUAREYARDS| SQUAREMAPUNITS| UNKNOWN

线性测量单位关键字:

CENTIMETERS| DECIMALDEGREES| DECIMETERS| FEET| INCHES| KILOMETERS| METERS| MILES| MILLIMETERS| NAUTICALMILES| POINTS| UNKNOWN| YARDS

注:

如果数据存储在地理坐标系中且具有线性单位(例如英尺),则会通过测地线算法转换长度计算的结果。

警告:

转换地理坐标系中数据的面积单位会生成不正确的结果,这是由于沿 globe的十进制度并不一致。

计算某要素的长度(以码为单位)。

表达式:

!shape.length@yards!

计算某要素的面积(以英亩为单位)。

表达式:

!shape.area@acres!

测地线面积和长度也可以通过带@(后跟测量单位关键字)的 geodesicArea和 geodesicLength属性进行计算。

计算某要素的测地线长度(以码为单位)。

表达式:

!shape.geodesicLength@yards!

计算某要素的测地线面积(以英亩为单位)。

表达式:

!shape.geodesicArea@acres!代码实例-日期

日期和时间可使用 datetime和 time模块进行计算。

计算当前日期。

表达式:

time.strftime("%d/%m/%Y")

计算当前日期和时间。

表达式:

datetime.datetime.now()

计算的日期为 2000年 12月 31日。

表达式:

datetime.datetime(2000, 12, 31)

计算当前日期和字段中的值之间的天数。

表达式:

(datetime.datetime.now()-!field1!).days

通过向字段中的日期值添加 100天来计算日期。

表达式:

!field1!+ datetime.timedelta(days=100)

计算字段中的日期值为一周中的周几(例如,星期天)。

表达式:

!field1!.strftime('%A')代码实例-字符串

可以使用多种 Python编码模式来完成字符串计算。

返回最右侧三个字符。

表达式:

!SUB_REGION![-3:]

将所有大写字母 P替换为小写字母 p。

表达式:

!STATE_NAME!.replace("P","p")

通过空格分隔符串连两个字段。

表达式:

!SUB_REGION!+""+!STATE_ABBR!转换为正确的大小写形式

下列各例显示的是转换单词的不同方法,这些方法可使每个单词的首字母变为大写、其余字母变为小写。

表达式:

''.join([i.capitalize() for i in!STATE_NAME!.split('')])表达式:

!STATE_NAME!.title()正则表达式

Python的 re模块提供了正则表达式匹配操作,可用于对字符串执行复杂的模式匹配和替换规则。

re-正则表达式运算正则表达式的用法

使用单词 Street替换 St或 St.,在字符串的末尾生成一个新单词。

表达式:

update_street(!ADDRESS!)

代码块:

import re

def update_street(street_name):

return re.sub(r"""\b(St|St.)\Z""",

'Street',

street_name)累加计算和顺序计算

可以使用全局变量来进行累加计算和顺序计算。

根据某间隔值计算顺序 ID或数字。

表达式:

autoIncrement()

代码块:

rec=0

def autoIncrement():

global rec

pStart= 1# adjust start value, if req'd

pInterval= 1# adjust interval value, if req'd

if(rec== 0):

rec= pStart

else:

rec= rec+ pInterval

return rec

计算数值型字段的累加值。

表达式:

accumulate(!FieldA!)

代码块:

total= 0

def accumulate(increment):

global total

if total:

total+= increment

else:

total= increment

return total

计算数值型字段的百分比增量。

表达式:

percentIncrease(float(!FieldA!))

代码块:

lastValue= 0

def percentIncrease(newValue):

global lastValue

if lastValue:

percentage=((newValue- lastValue)/ lastValue)* 100

else:

percentage= 0

lastValue= newValue

return percentage随机值

可以使用 random模块来计算随机值。

通过 numpy站点包来计算 0.0和 1.0之间的随机浮点值。

表达式:

getRandomValue()

代码块:

import numpy

def getRandomValue():

return numpy.random.random()

使用随机模块来计算 0与 10之间的随机整数。

表达式:

random.randint(0, 10)

代码块:

import random计算空值

在 Python表达式中,可通过 Python None来计算空值。

注:

仅当该字段为空时,才可以进行以下计算。

使用 Python None计算空值。

表达式:

None相关主题

有关字段计算的基础知识

授权转载:gisoracle

网课学习+权威结业证书

我们精心汇总了一些相对简单

培训考核通过便可获取的证书

自然资源部职鉴中心发证

可用于招投标、资质系统

测绘师继续教育20学时

中国测绘网新媒体中心

cehui8@qq.com

商务合作/微信 214979525

Python处理字符串必备方法

字符串是Python中基本的数据类型,几乎在每个Python程序中都会使用到它。

▍1、Slicing

slicing切片,按照一定条件从列表或者元组中取出部分元素(比如特定范围、索引、分割值)

▍2、****strip()

strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

在使用strip()方法时,默认去除空格或换行符,所以#号并没有去除。

可以给strip()方法添加指定字符,如下所示。

此外当指定内容不在头尾处时,并不会被去除。

第一个

前有个空格,所以只会去取尾部的换行符。

最后strip()方法的参数是剥离其值的所有组合,这个可以看下面这个案例。

最外层的首字符和尾字符参数值将从字符串中剥离。字符从前端移除,直到到达一个不包含在字符集中的字符串字符为止。

在尾部也会发生类似的动作。

▍3、****lstrip()

移除字符串左侧指定的字符(默认为空格或换行符)或字符序列。

同样的,可以移除左侧所有包含在字符集中的字符串。

▍4、rstrip()

移除字符串右侧指定的字符(默认为空格或换行符)或字符序列。

▍5、****removeprefix()

Python3.9中移除前缀的函数。

和strip()相比,并不会把字符集中的字符串进行逐个匹配。

▍6、removesuffix()

Python3.9中移除后缀的函数。

▍7、****replace()

把字符串中的内容替换成指定的内容。

▍8、****re.sub()

re是正则的表达式,sub是substitute表示替换。

re.sub则是相对复杂点的替换。

和replace()做对比,使用re.sub()进行替换操作,确实更高级点。

▍9、****split()

对字符串做分隔处理,最终的结果是一个列表。

当不指定分隔符时,默认按空格分隔。

此外,还可以指定字符串的分隔次数。

▍10、****rsplit()

从右侧开始对字符串进行分隔。

▍11、****join()

string.join(seq)。以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串。

▍12、****upper()

将字符串中的字母,全部转换为大写。

▍13、****lower()

将字符串中的字母,全部转换为小写。

▍14、capitalize()

将字符串中的首个字母转换为大写。

▍15、****islower()

判断字符串中的所有字母是否都为小写,是则返回True,否则返回False。

▍16、isupper()

判断字符串中的所有字母是否都为大写,是则返回True,否则返回False。

▍17、****isalpha()

如果字符串至少有一个字符并且所有字符都是字母,则返回 True,否则返回 False。

▍18、isnumeric()

如果字符串中只包含数字字符,则返回 True,否则返回 False。

▍19、isalnum()

如果字符串中至少有一个字符并且所有字符都是字母或数字,则返回True,否则返回 False。

▍20、count()

返回指定内容在字符串中出现的次数。

▍21、****find()

检测指定内容是否包含在字符串中,如果是返回开始的索引值,否则返回-1。

此外,还可以指定开始的范围。

▍22、rfind()

类似于find()函数,返回字符串最后一次出现的位置,如果没有匹配项则返回-1。

▍23、startswith()

检查字符串是否是以指定内容开头,是则返回 True,否则返回 False。

**

**

▍24、****endswith()

检查字符串是否是以指定内容结束,是则返回 True,否则返回 False。

▍25、****partition()

string.partition(str),有点像find()和split()的结合体。

从str出现的第一个位置起,把字符串string分成一个3元素的元组(string_pre_str,str,string_post_str),如果string中不包含str则 string_pre_str==string。

▍26、center()

返回一个原字符串居中,并使用空格填充至长度width的新字符串。

▍27、ljust()

返回一个原字符串左对齐,并使用空格填充至长度width的新字符串。

▍28、rjust()

返回一个原字符串右对齐,并使用空格填充至长度width的新字符串。

▍29、f-Strings

f-string是格式化字符串的新语法。

与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!

▍30、swapcase()

翻转字符串中的字母大小写。

▍31、zfill()

string.zfill(width)。

返回长度为width的字符串,原字符串string右对齐,前面填充0。

参考文献:

Python爬虫数据应该怎么处理

一、首先理解下面几个函数

设置变量 length()函数 char_length() replace()函数 max()函数

1.1、设置变量 set@变量名=值

set@address='中国-山东省-聊城市-莘县';select@address

1.2、length()函数 char_length()函数区别

select length('a')

,char_length('a')

,length('中')

,char_length('中')

1.3、 replace()函数和length()函数组合

set@address='中国-山东省-聊城市-莘县';select@address

,replace(@address,'-','') as address_1

,length(@address) as len_add1

,length(replace(@address,'-','')) as len_add2

,length(@address)-length(replace(@address,'-','')) as _count

etl清洗字段时候有明显分割符的如何确定新的数据表增加几个分割出的字段

计算出com_industry中最多有几个-符以便确定增加几个字段最大值+1为可以拆分成的字段数此表为3因此可以拆分出4个行业字段也就是4个行业等级

select max(length(com_industry)-length(replace(com_industry,'-',''))) as _max_count

from etl1_socom_data

1.4、设置变量 substring_index()字符串截取函数用法

set@address='中国-山东省-聊城市-莘县';

select

substring_index(@address,'-',1) as china,

substring_index(substring_index(@address,'-',2),'-',-1) as province,

substring_index(substring_index(@address,'-',3),'-',-1) as city,

substring_index(@address,'-',-1) as district

1.5、条件判断函数 case when

case when then when then else值 end as字段名

select case when 89>101 then'大于' else'小于' end as betl1_socom_data

二、kettle转换etl1清洗

首先建表步骤在视频里

字段索引没有提索引算法建议用BTREE算法增强查询效率

2.1.kettle文件名:trans_etl1_socom_data

2.2.包括控件:表输入>>>表输出

2.3.数据流方向:s_socom_data>>>>etl1_socom_data

kettle转换1截图

2.4、表输入2.4、SQL脚本初步清洗com_district和com_industry字段

select a.*,case when com_district like'%业' or com_district like'%织' or com_district like'%育' then null else com_district end as com_district1

,case when com_district like'%业' or com_district like'%织' or com_district like'%育' then concat(com_district,'-',com_industry) else com_industry end as com_industry_total

,replace(com_addr,'地址:','') as com_addr1

,replace(com_phone,'电话:','') as com_phone1

,replace(com_fax,'传真:','') as com_fax1

,replace(com_mobile,'手机:','') as com_mobile1

,replace(com_url,'网址:','') as com_url1

,replace(com_email,'邮箱:','') as com_email1

,replace(com_contactor,'联系人:','') as com_contactor1

,replace(com_emploies_nums,'公司人数:','') as com_emploies_nums1

,replace(com_reg_capital,'注册资金:万','') as com_reg_capital1

,replace(com_type,'经济类型:','') as com_type1

,replace(com_product,'公司产品:','') as com_product1

,replace(com_desc,'公司简介:','') as com_desc1from s_socom_data as a

2.5、表输出

表输出设置注意事项

注意事项:

①涉及爬虫增量操作不要勾选裁剪表选项

②数据连接问题选择表输出中表所在的数据库

③字段映射问题确保数据流中的字段和物理表的字段数量一致对应一致

三、kettle转换etl2清洗

首先建表增加了4个字段演示步骤在视频里

字段索引没有提索引算法建议用BTREE算法增强查询效率

主要针对etl1生成的新的com_industry进行字段拆分清洗

3.1.kettle文件名:trans_etl2_socom_data

3.2.包括控件:表输入>>>表输出

3.3.数据流方向:etl1_socom_data>>>>etl2_socom_data

注意事项:

①涉及爬虫增量操作不要勾选裁剪表选项

②数据连接问题选择表输出中表所在的数据库

③字段映射问题确保数据流中的字段和物理表的字段数量一致对应一致

kettle转换2截图

3.4、SQL脚本对com_industry进行拆分完成所有字段清洗注册资金字段时间关系没有进行细致拆解调整代码即可

select a.*,case

#行业为''的值置为空when length(com_industry)=0 then null

#其他的取第一个-分隔符之前else substring_index(com_industry,'-',1) end as com_industry1,case

when length(com_industry)-length(replace(com_industry,'-',''))=0 then null

#'交通运输、仓储和邮政业-'这种值行业2也置为nullwhen length(com_industry)-length(replace(com_industry,'-',''))=1 and length(substring_index(com_industry,'-',-1))=0 then nullwhen length(com_industry)-length(replace(com_industry,'-',''))=1 then substring_index(com_industry,'-',-1)else substring_index(substring_index(com_industry,'-',2),'-',-1)end as com_industry2,case

when length(com_industry)-length(replace(com_industry,'-',''))<=1 then nullwhen length(com_industry)-length(replace(com_industry,'-',''))=2 then substring_index(com_industry,'-',-1)else substring_index(substring_index(com_industry,'-',3),'-',-1)end as com_industry3,case

when length(com_industry)-length(replace(com_industry,'-',''))<=2 then nullelse substring_index(com_industry,'-',-1)end as com_industry4from etl1_socom_data as a

四、清洗效果质量检查

4.1爬虫数据源数据和网站数据是否相符

如果本身工作是爬虫和数据处理在一起处理,抓取的时候其实已经判断,此步骤可以省略,如果对接上游爬虫同事,这一步首先判断,不然清洗也是无用功,一般都要求爬虫同事存储请求的url便于后面数据处理查看数据质量

4.2计算爬虫数据源和各etl清洗数据表数据量

注:SQL脚本中没有经过聚合过滤 3个表数据量应相等

4.2.1、sql查询下面表我是在同一数据库中如果不在同一数据库 from后面应加上表所在的数据库名称

不推荐数据量大的时候使用

select count(1) from s_socom_dataunion all

select count(1) from etl1_socom_dataunion all

select count(1) from etl2_socom_data

4.2.2根据 kettle转换执行完毕以后表输出总量对比

kettle表输出总数据量

4.3查看etl清洗质量

确保前两个步骤已经无误,数据处理负责的etl清洗工作自查开始针对数据源清洗的字段写脚本检查 socom网站主要是对地区和行业进行了清洗对其他字段做了替换多余字段处理,因此采取脚本检查,

找到page_url和网站数据进行核查

where里面这样写便于查看某个字段的清洗情况

select*

from etl2_socom_data

where com_district is null and length(com_industry)-length(replace(com_industry,'-',''))=3

此页面数据和etl2_socom_data表最终清洗数据对比

网站页面数据

etl2_socom_data表数据

清洗工作完成。

关于replace函数python和python replace函数用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

access数据库查询 mysql数据库可视化软件自学编程软件 简单的编程软件