欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

p64函數(shù)python的簡單介紹

python編寫用pow()函數(shù)計算球的體積?

使用鍵盤輸入值并不是編輯表中值的唯一方式。在某些情況下,為了設(shè)置字段值,可能要對單條記錄甚至是所有記錄執(zhí)行數(shù)學(xué)計算。您可以對所有記錄或選中記錄執(zhí)行簡單計算和高級計算。此外,還可以在屬性表中的字段上計算面積、長度、周長和其他幾何屬性。以下各部分包括使用字段計算器的若干示例。使用 Python、SQL 和 Arcade 執(zhí)行計算。

貴池網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),貴池網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為貴池上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的貴池做網(wǎng)站的公司定做!

本主題著重于基于 Python 的計算字段示例。要了解有關(guān) Arcade 表達(dá)式的詳細(xì)信息,請參閱 ArcGIS Arcade 指南。要了解有關(guān) SQL 表達(dá)式的詳細(xì)信息,請參閱計算字段。

注:

Python 強制將縮進(jìn)作為語法的一部分。請使用兩個或四個空格來定義每個邏輯級別。將語句塊的開頭和結(jié)尾對齊并且保持一致。

Python 計算表達(dá)式字段將使用驚嘆號 (!!) 括起。

命名變量時,請注意 Python 區(qū)分大小寫,因此 value 不同于 Value。

輸入語句后,如果想將其寫入文件,請單擊導(dǎo)出。導(dǎo)入按鈕將提示您查找和選擇一個現(xiàn)有的計算文件。

簡單計算

僅通過一個短表達(dá)式就可以計算出多種計算結(jié)果。

簡單字符串示例

一系列 Python 字符串函數(shù)均支持使用字符串,包括 capitalize、rstrip 和 replace。

將 CITY_NAME 字段中字符串的首字母大寫。

!CITY_NAME!.capitalize()

去掉 CITY_NAME 字段中自字符串結(jié)尾起的所有空白區(qū)。

!CITY_NAME!.rstrip()

將 STATE_NAME 字段中的“california”全部替換為“California”。

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

在 Python 中,字符串字段中的字符可以通過索引和分割操作進(jìn)行訪問。索引操作將在索引位置提取字符,而分割操作則會提取一組字符。在下表中,假設(shè) !fieldname! 是值為 "abcde" 的字符串字段。

示例

說明

結(jié)果

!fieldname![0]

第一個字符

"a"

!fieldname![-2]

倒數(shù)第二個字符

"d"

!fieldname![1:4]

第二、三和四個字符

"bcd"

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

將合并后的 FieldA 和 FieldB 以冒號分隔開。

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

常見 Python 字符串操作

簡單數(shù)學(xué)示例

Python 提供了處理數(shù)字的工具。Python 也支持一些數(shù)值和數(shù)學(xué)函數(shù),包括 math、cmath、decimal、random、itertools、functools 和 operator。

運算符

說明

示例

結(jié)果

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 的負(fù)數(shù)表達(dá)式

x = 5

-x

-5

+x

x 不變

x = 5

+x

5

x ** y

以 x 為底,以 y 為指數(shù)的冪

2 ** 3

8

!Rank! * 2

根據(jù)給定的半徑字段計算球體的體積。

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

舊版本:

在 ArcGIS Pro 中,使用的是 Python 3,在 ArcGIS Desktop 中,使用的 Python 2。Python 2 使用的是整型數(shù)學(xué)計算,這就意味著兩個整型值相除將始終生成整型值 (3 / 2 = 1)。在 Python 3 中,兩個整型值相除將生成浮點型值 (3 / 2 = 1.5)。

Python 內(nèi)置函數(shù)

Python 包含多個可用的內(nèi)置函數(shù),包括 max、min、round 和 sum。

Python 內(nèi)置函數(shù)

通過字段列表計算每條記錄的最大值。

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

通過字段列表計算每條記錄的總和。

sum([!field1!, !field2!, !field3!])?使用代碼塊

通過 Python 表達(dá)式和代碼塊參數(shù)可執(zhí)行以下操作:

在表達(dá)式中應(yīng)用任意 Python 函數(shù)。

訪問地理處理函數(shù)和對象。

訪問要素幾何的屬性。

訪問新的隨機值運算符。

使用 if-then-else 邏輯對值進(jìn)行重分類。

表達(dá)式類型

代碼塊

Python 3

支持 Python 功能。使用 Python 函數(shù) (def) 表示代碼塊。在適當(dāng)?shù)那闆r下,幾何屬性將通過地理處理對象表示(如點對象)。

Arcade

支持 Arcade 功能。

SQL

支持 SQL 表達(dá)式。

執(zhí)行 SQL 表達(dá)式可以更好地支持使用要素服務(wù)和企業(yè)級地理數(shù)據(jù)庫的計算,尤其是在性能方面。使用該表達(dá)式可以將單次請求設(shè)置為要素服務(wù)或數(shù)據(jù)庫,而不必一次執(zhí)行一個要素或一行的計算。

舊版本:

在 ArcGIS Desktop 中,計算字段工具支持 VB、PYTHON 和 PYTHON_9.3 表達(dá)式類型。VB 表達(dá)式類型,在某些產(chǎn)品中受支持,但在 64 位產(chǎn)品中不受支持,其中包括 ArcGIS Pro。

出于相后兼容性考量,ArcGIS Pro 中仍然支持 PYTHON 和 PYTHON_9.3 關(guān)鍵字,但是不會作為選擇列出。使用這些關(guān)鍵字的 Python 腳本將可繼續(xù)使用。

Python 3 表達(dá)式類型與舊版 PYTHON_9.3 關(guān)鍵字的唯一區(qū)別在于 Python 3 會將日期字段中的值作為 Python datetime 對象返回。

注:

Python 3 表達(dá)式類型與隨 ArcGIS Pro 安裝的 Python 版本無關(guān)。這只是歷史上的第三個 Python 相關(guān)關(guān)鍵字(繼 PYTHON 和 PYTHON_9.3 之后。

各 Python 函數(shù)可通過 def 關(guān)鍵字定義,關(guān)鍵字后為函數(shù)名稱及函數(shù)的輸入?yún)?shù)。可編寫 Python 函數(shù),使 Python 函數(shù)能夠接受任何數(shù)量的輸入?yún)?shù)(也可以沒有任何參數(shù))。函數(shù)將通過 return 語句返回值。函數(shù)名稱可由您自行選取(不得使用空格,也不得以數(shù)字開頭)。

注:

如果函數(shù)未通過 return 語句顯式返回值,則函數(shù)將返回 None。

注:

請牢記,Python 強制要求將縮進(jìn)作為語法的一部分。請使用四個空格來定義每個邏輯級別。將語句塊的開頭和結(jié)尾對齊并且保持一致。

代碼示例 - 數(shù)學(xué)

在使用以下數(shù)學(xué)示例時,請假設(shè)表達(dá)式類型為 Python 3。

將字段的值四舍五入為保留兩位小數(shù)。

表達(dá)式:

round(!area!, 2)

通過 math 模塊將米轉(zhuǎn)換成英尺。以轉(zhuǎn)換值為底,以 2 為指數(shù)進(jìn)行冪運算,然后再乘以 area。

表達(dá)式:

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

代碼塊:

import math

def MetersToFeet(area):

return math.pow(3.2808, 2) * area?通過 Python 邏輯計算字段

可以使用 if、else 和 elif 語句將邏輯模式包含在代碼塊中。

按照字段值進(jìn)行分類。

表達(dá)式:

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?代碼實例 - 幾何

除以下代碼示例外,請參閱下方的“幾何單位轉(zhuǎn)換”部分,以了解有關(guān)轉(zhuǎn)換幾何單位的詳細(xì)信息。

計算某要素的面積。

表達(dá)式:

!shape.area!

計算某要素的最大 x 坐標(biāo)。

表達(dá)式:

!shape.extent.XMax!

計算某要素中的折點數(shù)。

表達(dá)式:

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 坐標(biāo)平移 100。

表達(dá)式:

shiftXCoordinate(!SHAPE!)

代碼塊:

def shiftXCoordinate(shape):

shiftValue = 100

point = shape.getPart(0)

point.X += shiftValue

return point?幾何單位轉(zhuǎn)換

幾何字段的面積和長度屬性可通過用 @ 符號表示的單位類型進(jìn)行修改。

面積測量單位關(guān)鍵字:

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

線性測量單位關(guān)鍵字:

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

注:

如果數(shù)據(jù)存儲在地理坐標(biāo)系中且具有線性單位(例如英尺),則會通過測地線算法轉(zhuǎn)換長度計算的結(jié)果。

警告:

轉(zhuǎn)換地理坐標(biāo)系中數(shù)據(jù)的面積單位會生成不正確的結(jié)果,這是由于沿 globe 的十進(jìn)制度并不一致。

計算某要素的長度(以碼為單位)。

表達(dá)式:

!shape.length@yards!

計算某要素的面積(以英畝為單位)。

表達(dá)式:

!shape.area@acres!

測地線面積和長度也可以通過帶 @(后跟測量單位關(guān)鍵字)的 geodesicArea 和 geodesicLength 屬性進(jìn)行計算。

計算某要素的測地線長度(以碼為單位)。

表達(dá)式:

!shape.geodesicLength@yards!

計算某要素的測地線面積(以英畝為單位)。

表達(dá)式:

!shape.geodesicArea@acres!?代碼實例 - 日期

日期和時間可使用 datetime 和 time 模塊進(jìn)行計算。

計算當(dāng)前日期。

表達(dá)式:

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

計算當(dāng)前日期和時間。

表達(dá)式:

datetime.datetime.now()

計算的日期為 2000 年 12 月 31 日。

表達(dá)式:

datetime.datetime(2000, 12, 31)

計算當(dāng)前日期和字段中的值之間的天數(shù)。

表達(dá)式:

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

通過向字段中的日期值添加 100 天來計算日期。

表達(dá)式:

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

計算字段中的日期值為一周中的周幾(例如,星期天)。

表達(dá)式:

!field1!.strftime('%A')?代碼實例 - 字符串

可以使用多種 Python 編碼模式來完成字符串計算。

返回最右側(cè)三個字符。

表達(dá)式:

!SUB_REGION![-3:]

將所有大寫字母 P 替換為小寫字母 p。

表達(dá)式:

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

通過空格分隔符串連兩個字段。

表達(dá)式:

!SUB_REGION! + " " + !STATE_ABBR!?轉(zhuǎn)換為正確的大小寫形式

下列各例顯示的是轉(zhuǎn)換單詞的不同方法,這些方法可使每個單詞的首字母變?yōu)榇髮憽⑵溆嘧帜缸優(yōu)樾憽?/p>

表達(dá)式:

' '.join([i.capitalize() for i in !STATE_NAME!.split(' ')])?表達(dá)式:

!STATE_NAME!.title()?正則表達(dá)式

Python 的 re 模塊提供了正則表達(dá)式匹配操作,可用于對字符串執(zhí)行復(fù)雜的模式匹配和替換規(guī)則。

re - 正則表達(dá)式運算正則表達(dá)式的用法

使用單詞 Street 替換 St 或 St.,在字符串的末尾生成一個新單詞。

表達(dá)式:

update_street(!ADDRESS!)

代碼塊:

import re

def update_street(street_name):

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

'Street',

street_name)?累加計算和順序計算

可以使用全局變量來進(jìn)行累加計算和順序計算。

根據(jù)某間隔值計算順序 ID 或數(shù)字。

表達(dá)式:

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

計算數(shù)值型字段的累加值。

表達(dá)式:

accumulate(!FieldA!)

代碼塊:

total = 0

def accumulate(increment):

global total

if total:

total += increment

else:

total = increment

return total

計算數(shù)值型字段的百分比增量。

表達(dá)式:

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 之間的隨機浮點值。

表達(dá)式:

getRandomValue()

代碼塊:

import numpy

def getRandomValue():

return numpy.random.random()

使用隨機模塊來計算 0 與 10 之間的隨機整數(shù)。

表達(dá)式:

random.randint(0, 10)

代碼塊:

import random?計算空值

在 Python 表達(dá)式中,可通過 Python None 來計算空值。

注:

僅當(dāng)該字段為空時,才可以進(jìn)行以下計算。

使用 Python None 計算空值。

表達(dá)式:

None?相關(guān)主題

有關(guān)字段計算的基礎(chǔ)知識

授權(quán)轉(zhuǎn)載:gisoracle

網(wǎng)課學(xué)習(xí) + 權(quán)威結(jié)業(yè)證書

我們精心匯總了一些相對簡單

培訓(xùn)考核通過便可獲取的證書

自然資源部職鑒中心發(fā)證

可用于招投標(biāo)、資質(zhì)系統(tǒng)

測繪師繼續(xù)教育20學(xué)時

中國測繪網(wǎng)新媒體中心

cehui8@qq.com

商務(wù)合作/微信 214979525

Python氣象數(shù)據(jù)處理與繪圖(2):常用數(shù)據(jù)計算方法

對于氣象繪圖來講,第一步是對數(shù)據(jù)的處理,通過各類公式,或者統(tǒng)計方法將原始數(shù)據(jù)處理為目標(biāo)數(shù)據(jù)。

按照氣象統(tǒng)計課程的內(nèi)容,我給出了一些常用到的統(tǒng)計方法的對應(yīng)函數(shù):

在計算氣候態(tài),區(qū)域平均時均要使用到求均值函數(shù),對應(yīng)NCL中的dim_average函數(shù),在python中通常使用np.mean()函數(shù)

numpy.mean(a, axis, dtype)

假設(shè)a為[time,lat,lon]的數(shù)據(jù),那么

需要特別注意的是,氣象數(shù)據(jù)中常有缺測,在NCL中,使用求均值函數(shù)會自動略過,而在python中,當(dāng)任意一數(shù)與缺測(np.nan)計算的結(jié)果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結(jié)果為np.nan

因此,當(dāng)數(shù)據(jù)存在缺測數(shù)據(jù)時,通常使用np.nanmean()函數(shù),用法同上,此時[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5

同樣的,求某數(shù)組最大最小值時也有np.nanmax(), np.nanmin()函數(shù)來補充np.max(), np.min()的不足。

其他很多np的計算函數(shù)也可以通過在前邊加‘nan’來使用。

另外,

也可以直接將a中缺失值全部填充為0。

np.std(a, axis, dtype)

用法同np.mean()

在NCL中有直接求數(shù)據(jù)標(biāo)準(zhǔn)化的函數(shù)dim_standardize()

其實也就是一行的事,根據(jù)需要指定維度即可。

皮爾遜相關(guān)系數(shù):

相關(guān)可以說是氣象科研中最常用的方法之一了,numpy函數(shù)中的np.corrcoef(x, y)就可以實現(xiàn)相關(guān)計算。但是在這里我推薦scipy.stats中的函數(shù)來計算相關(guān)系數(shù):

這個函數(shù)缺點和有點都很明顯,優(yōu)點是可以直接返回相關(guān)系數(shù)R及其P值,這避免了我們進(jìn)一步計算置信度。而缺點則是該函數(shù)只支持兩個一維數(shù)組的計算,也就是說當(dāng)我們需要計算一個場和一個序列的相關(guān)時,我們需要循環(huán)來實現(xiàn)。

其中a[time,lat,lon],b[time]

(NCL中為regcoef()函數(shù))

同樣推薦Scipy庫中的stats.linregress(x,y)函數(shù):

slop: 回歸斜率

intercept:回歸截距

r_value: 相關(guān)系數(shù)

p_value: P值

std_err: 估計標(biāo)準(zhǔn)誤差

直接可以輸出P值,同樣省去了做置信度檢驗的過程,遺憾的是仍需同相關(guān)系數(shù)一樣循環(huán)計算。

68 個 Python 內(nèi)置函數(shù)詳解

內(nèi)置函數(shù)就是Python給你提供的,拿來直接用的函數(shù),比如print.,input等。

截止到python版本3.6.2 ,python一共提供了68個內(nèi)置函數(shù),具體如下

本文將這68個內(nèi)置函數(shù)綜合整理為12大類,正在學(xué)習(xí)Python基礎(chǔ)的讀者一定不要錯過,建議收藏學(xué)習(xí)!

(1)列表和元組

(2)相關(guān)內(nèi)置函數(shù)

(3)字符串

frozenset 創(chuàng)建一個凍結(jié)的集合,凍結(jié)的集合不能進(jìn)行添加和刪除操作。

語法:sorted(Iterable, key=函數(shù)(排序規(guī)則), reverse=False)

語法:fiter(function. Iterable)

function: 用來篩選的函數(shù). 在?lter中會自動的把iterable中的元素傳遞給function. 然后根據(jù)function返回的True或者False來判斷是否保留留此項數(shù)據(jù) , Iterable: 可迭代對象

搜索公眾號頂級架構(gòu)師后臺回復(fù)“面試”,送你一份驚喜禮包。

語法 : map(function, iterable)

可以對可迭代對象中的每一個元素進(jìn)行映射. 分別去執(zhí)行 function

hash : 獲取到對象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空間換的時間 比較耗費內(nèi)存

python 常用的系統(tǒng)函數(shù)有哪些

1.常用內(nèi)置函數(shù):(不用import就可以直接使用)

help(obj) 在線幫助, obj可是任何類型

callable(obj) 查看一個obj是不是可以像函數(shù)一樣調(diào)用

repr(obj) 得到obj的表示字符串,可以利用這個字符串eval重建該對象的一個拷貝

eval_r(str) 表示合法的python表達(dá)式,返回這個表達(dá)式

dir(obj) 查看obj的name space中可見的name

hasattr(obj,name) 查看一個obj的name space中是否有name

getattr(obj,name) 得到一個obj的name space中的一個name

setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object

delattr(obj,name) 從obj的name space中刪除一個name

vars(obj) 返回一個object的name space。用dictionary表示

locals() 返回一個局部name space,用dictionary表示

globals() 返回一個全局name space,用dictionary表示

type(obj) 查看一個obj的類型

isinstance(obj,cls) 查看obj是不是cls的instance

issubclass(subcls,supcls) 查看subcls是不是supcls的子類

類型轉(zhuǎn)換函數(shù)

chr(i) 把一個ASCII數(shù)值,變成字符

ord(i) 把一個字符或者unicode字符,變成ASCII數(shù)值

oct(x) 把整數(shù)x變成八進(jìn)制表示的字符串

hex(x) 把整數(shù)x變成十六進(jìn)制表示的字符串

str(obj) 得到obj的字符串描述

list(seq) 把一個sequence轉(zhuǎn)換成一個list

tuple(seq) 把一個sequence轉(zhuǎn)換成一個tuple

dict(),dict(list) 轉(zhuǎn)換成一個dictionary

int(x) 轉(zhuǎn)換成一個integer

long(x) 轉(zhuǎn)換成一個long interger

float(x) 轉(zhuǎn)換成一個浮點數(shù)

complex(x) 轉(zhuǎn)換成復(fù)數(shù)

max(...) 求最大值

min(...) 求最小值

用于執(zhí)行程序的內(nèi)置函數(shù)

complie 如果一段代碼經(jīng)常要使用,那么先編譯,再運行會更快。

2.和操作系統(tǒng)相關(guān)的調(diào)用

系統(tǒng)相關(guān)的信息模塊 import sys

sys.argv是一個list,包含所有的命令行參數(shù).

sys.stdout sys.stdin sys.stderr 分別表示標(biāo)準(zhǔn)輸入輸出,錯誤輸出的文件對象.

sys.stdin.readline() 從標(biāo)準(zhǔn)輸入讀一行 sys.stdout.write("a") 屏幕輸出a

sys.exit(exit_code) 退出程序

sys.modules 是一個dictionary,表示系統(tǒng)中所有可用的module

sys.platform 得到運行的操作系統(tǒng)環(huán)境

sys.path 是一個list,指明所有查找module,package的路徑.

操作系統(tǒng)相關(guān)的調(diào)用和操作 import os

os.environ 一個dictionary 包含環(huán)境變量的映射關(guān)系 os.environ["HOME"] 可以得到環(huán)境變量HOME的值

os.chdir(dir) 改變當(dāng)前目錄 os.chdir('d:\\outlook') 注意windows下用到轉(zhuǎn)義

os.getcwd() 得到當(dāng)前目錄

os.getegid() 得到有效組id os.getgid() 得到組id

os.getuid() 得到用戶id os.geteuid() 得到有效用戶id

os.setegid os.setegid() os.seteuid() os.setuid()

os.getgruops() 得到用戶組名稱列表

os.getlogin() 得到用戶登錄名稱

os.getenv 得到環(huán)境變量

os.putenv 設(shè)置環(huán)境變量

os.umask 設(shè)置umask

os.system(cmd) 利用系統(tǒng)調(diào)用,運行cmd命令

操作舉例:

os.mkdir('/tmp/xx') os.system("echo 'hello' /tmp/xx/a.txt") os.listdir('/tmp/xx')

os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')

用python編寫一個簡單的shell

#!/usr/bin/python

import os, sys

cmd = sys.stdin.readline()

while cmd:

os.system(cmd)

cmd = sys.stdin.readline()

用os.path編寫平臺無關(guān)的程序

os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")

os.path.split(os.getcwd()) 用于分開一個目錄名稱中的目錄部分和文件名稱部分。

os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路徑名稱.

os.pardir 表示當(dāng)前平臺下上一級目錄的字符 ..

os.path.getctime("/root/1.txt") 返回1.txt的ctime(創(chuàng)建時間)時間戳

os.path.exists(os.getcwd()) 判斷文件是否存在

os.path.expanduser('~/dir') 把~擴(kuò)展成用戶根目錄

os.path.expandvars('$PATH') 擴(kuò)展環(huán)境變量PATH

os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否

os.path.isdir('c:\Python26\temp') 判斷是否是目錄,1是0否

os.path.islink('/home/huaying/111.sql') 是否是符號連接 windows下不可用

os.path.ismout(os.getcwd()) 是否是文件系統(tǒng)安裝點 windows下不可用

os.path.samefile(os.getcwd(), '/home/huaying') 看看兩個文件名是不是指的是同一個文件

os.path.walk('/home/huaying', test_fun, "a.c")

遍歷/home/huaying下所有子目錄包括本目錄,對于每個目錄都會調(diào)用函數(shù)test_fun.

例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。

def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪問的目錄名稱

if filename in names: //names是一個list,包含dirname目錄下的所有內(nèi)容

print os.path.join(dirname, filename)

os.path.walk('/home/huaying', test_fun, "a.c")

文件操作

打開文件

f = open("filename", "r") r只讀 w寫 rw讀寫 rb讀二進(jìn)制 wb寫二進(jìn)制 w+寫追加

讀寫文件

f.write("a") f.write(str) 寫一字符串 f.writeline() f.readlines() 與下read類同

f.read() 全讀出來 f.read(size) 表示從文件中讀取size個字符

f.readline() 讀一行,到文件結(jié)尾,返回空串. f.readlines() 讀取全部,返回一個list. list每個元素表示一行,包含"\n"\

f.tell() 返回當(dāng)前文件讀取位置

f.seek(off, where) 定位文件讀寫位置. off表示偏移量,正數(shù)向文件尾移動,負(fù)數(shù)表示向開頭移動。

where為0表示從開始算起,1表示從當(dāng)前位置算,2表示從結(jié)尾算.

f.flush() 刷新緩存

關(guān)閉文件

f.close()

regular expression 正則表達(dá)式 import re

簡單的regexp

p = re.compile("abc") if p.match("abc") : print "match"

上例中首先生成一個pattern(模式),如果和某個字符串匹配,就返回一個match object

除某些特殊字符metacharacter元字符,大多數(shù)字符都和自身匹配。

這些特殊字符是 。^ $ * + ? { [ ] \ | ( )

字符集合(用[]表示)

列出字符,如[abc]表示匹配a或b或c,大多數(shù)metacharacter在[]中只表示和本身匹配。例:

a = ".^$*+?{\\|()" 大多數(shù)metachar在[]中都和本身匹配,但"^[]\"不同

p = re.compile("["+a+"]")

for i in a:

if p.match(i):

print "[%s] is match" %i

else:

print "[%s] is not match" %i

在[]中包含[]本身,表示"["或者"]"匹配.用

表示.

^出現(xiàn)在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字符。^沒有出現(xiàn)在開頭,即于身身匹配。

-可表示范圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數(shù)字。

\在[]中的妙用。

\d [0-9]

\D [^0-9]

\s [ \t\n\r\f\v]

\S [^ \t\n\r\f\v]

\w [a-zA-Z0-9_]

\W [^a-zA-Z0-9_]

\t 表示和tab匹配, 其他的都和字符串的表示法一致

\x20 表示和十六進(jìn)制ascii 0x20匹配

有了\,可以在[]中表示任何字符。注:單獨的一個"."如果沒有出現(xiàn)[]中,表示出了換行\(zhòng)n以外的匹配任何字符,類似[^\n].

regexp的重復(fù)

{m,n}表示出現(xiàn)m個以上(含m個),n個以下(含n個). 如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。

m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。

*表示{,} +表示{1,} ?表示{0,1}

最大匹配和最小匹配 python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}后面加一個?.

match object的end可以得到匹配的最后一個字符的位置。

re.compile("a*").match('aaaa').end() 4 最大匹配

re.compile("a*?").match('aaaa').end() 0 最小匹配

使用原始字符串

字符串表示方法中用\\表示字符\.大量使用影響可讀性。

解決方法:在字符串前面加一個r表示raw格式。

a = r"\a" print a 結(jié)果是\a

a = r"\"a" print a 結(jié)果是\"a

使用re模塊

先用re.compile得到一個RegexObject 表示一個regexp

后用pattern的match,search的方法,得到MatchObject

再用match object得到匹配的位置,匹配的字符串等信息

RegxObject常用函數(shù):

re.compile("a").match("abab") 如果abab的開頭和re.compile("a")匹配,得到MatchObject

_sre.SRE_Match object at 0x81d43c8

print re.compile("a").match("bbab")

None 注:從str的開頭開始匹配

re.compile("a").search("abab") 在abab中搜索第一個和re_obj匹配的部分

_sre.SRE_Match object at 0x81d43c8

print re.compile("a").search("bbab")

_sre.SRE_Match object at 0x8184e18 和match()不同,不必從開頭匹配

re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.

返回一個tuple,其中元素是匹配的字符串.

MatchObject的常用函數(shù)

m.start() 返回起始位置,m.end()返回結(jié)束位置(不包含該位置的字符).

m.span() 返回一個tuple表示(m.start(), m.end())

m.pos(), m.endpos(), m.re(), m.string()

m.re().search(m.string(), m.pos(), m.endpos()) 會得到m本身

m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.

for m in re.compile("[ab]").finditer("tatbxaxb"):

print m.span()

高級regexp

| 表示聯(lián)合多個regexp. A B兩個regexp,A|B表示和A匹配或者跟B匹配.

^ 表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。

$ 表示只匹配一行的結(jié)尾

\A 表示只匹配第一行字符串的開頭 ^匹配每一行的行首

\Z 表示只匹配行一行字符串的結(jié)尾 $匹配第一行的行尾

\b 只匹配詞的邊界 例:\binfo\b 只會匹配"info" 不會匹配information

\B 表示匹配非單詞邊界

示例如下:

print re.compile(r"\binfo\b").match("info ") #使用raw格式 \b表示單詞邊界

_sre.SRE_Match object at 0x817aa98

print re.compile("\binfo\b").match("info ") #沒有使用raw \b表示退格符號

None

print re.compile("\binfo\b").match("\binfo\b ")

_sre.SRE_Match object at 0x8174948

分組(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups() ('abc', 'b')

#!/usr/local/bin/python

import re

x = """

name: Charles

Address: BUPT

name: Ann

Address: BUPT

"""

#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)

p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)

for m in p.finditer(x):

print m.span()

print "here is your friends list"

print "%s, %s"%m.groups()

Compile Flag

用re.compile得到RegxObject時,可以有一些flag用來調(diào)整RegxObject的詳細(xì)特征.

DOTALL, S 讓.匹配任意字符,包括換行符\n

IGNORECASE, I 忽略大小寫

LOCALES, L 讓\w \W \b \B和當(dāng)前的locale一致

MULTILINE, M 多行模式,只影響^和$(參見上例)

VERBOSE, X verbose模式

當(dāng)前文章:p64函數(shù)python的簡單介紹
分享網(wǎng)址:http://chinadenli.net/article8/dogecip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、建站公司網(wǎng)站收錄、域名注冊微信小程序、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站