7.python字元串-內置方法分析

来源:http://www.cnblogs.com/scolia/archive/2016/05/26/5532712.html
-Advertisement-
Play Games

上篇對python中的字元串進行了列舉和簡單說明,但這些方法太多,逐一背下效率實在太低,下麵我來對這些方法安裝其功能進行總結: 1.字母大小寫相關(中文無效) 1.1 S.upper() -> string 返回一個字母全部大寫的副本 1.2 S.lower() -> string 返回一個字母全是 ...


  上篇對python中的字元串內置方法進行了列舉和簡單說明,但這些方法太多,逐一背下效率實在太低,下麵我來對這些方法按照其功能進行總結:

1.字母大小寫相關(中文無效)

  1.1 S.upper() -> string 

    返回一個字母全部大寫的副本

  1.2 S.lower() -> string 

    返回一個字母全是小寫的副本

  1.3 S.swapcase() -> string 

    返回一個字母大小寫轉換後的副本

  1.4 S.title() -> string 

    將單詞的首字母大寫,即為所謂的標題

    方框里是中文的編碼,可以發現 s 還是大寫了,說明會無視其他類型的字元,找到英文單詞就將其首字母大寫

  1.6 S.capitalize() -> string 

    將字元串的首字母大寫,要註意不是所有單詞,註意和上面的區別

    而且當字元串的首字元不是字母的時候是無效的

 

  1.5 S.isupper() -> bool 

    判斷字元串內的字母是否全是大寫,字元串中必須要有字母,返回布爾值

    和其他字元混合時情況如下

    會無視其他字元,只對字母進行判斷

  1.6 S.islower() -> bool 

    判斷字元串內的字母是否全是小寫,字元串中必須要有字母,返回布爾值

    和大寫判斷是相對應的,這裡不繼續舉例了。

  1.7 S.istitle() -> bool 

    判斷字元串是否符合標題格式,返回布爾值,關於python字元串中何為標題上面也是詳細介紹了,這裡不多說。

 


 

 

2.字元串組成字元判斷

  字元串內的字元除了是英文字母之外,還可以有其他字元,有一些方法可以對字元串的組成字元進行判斷

  2.1 S.isalpha() -> bool 

    判斷字元串是否全是由字母組成,返回布爾值

    

    只有是全字母才行,有數字和中文等都不行

  2.2 S.isdigit() -> bool 

    判斷字元串是否全是由數字組成,返回布爾值

    和上面類似,不多說明

  2.3  S.isalnum() -> bool 

    判斷字元串是否全是由字母和數字組成,返回布爾值

    是上面兩種判斷的合併

  2.4  S.isspace() -> bool 

    判斷字元串是否都是由空字元組成,返回布爾值

  

    空字元不意味著字元串為空,如空格,\n 等特殊字元都算是空字元


 

 

3.字元串是否是以某特定字元開頭或結尾的判斷

  3.1  S.startswith(prefix[, start[, end]]) -> bool 

    判斷是否是以某特定字元開頭,返回布爾值

    預設是從第一個字元開始,也就是索引值為0開始,可以用索引來指定對某個範圍的字元進行判斷

  3.2 S.endswith(suffix[, start[, end]]) -> bool 

    判斷是否是以某特定字元結尾,返回布爾值

    和上面類似,不多解釋


 

關於字元串中帶判斷的就是這麼多,下麵總結一下究竟可以判斷什麼:

  1.字元串里的字母是否全是小寫或大寫

  2.字元串是否符合標題格式的判斷

  3.字元串的組成是否是全字母,全數字,或全是字母和數字,或者全是空字元

  4.字元串是否是以給定的字元開頭或結尾

 


 

4.在字元串內尋找給定字元

  4.1 S.find(sub [,start [,end]]) -> int 

    在原字元串內尋找給定的字元,找到了的第一個,返回其索引值,沒找到返回-1

  註意是從左向右尋找,找到的第一個,像這裡的 o ,在原字元串有多個,但只返回了第一個的索引值,另外當給的字元不只一個時,按給的字元串的第一個字元作為基準點,如這裡的 co 返回的就是 c 的索引值。當然可以指定範圍,但指定範圍其並不意味會重新計算索引值,得到的依然是相對於整個字元串的索引。

  4.2 S.rfind(sub [,start [,end]]) -> int 

    與上面的相同,只不過是從右往左尋找。

 

  4.3  S.index(sub [,start [,end]]) -> int 

     和 find() 方法基本一樣,只不過 find() 找不到時返回的是-1,而 index() 找不到是會報錯。

  4.4 S.rindex(sub [,start [,end]]) -> int 

    同理,這個是從右往左找

 


 

5.字元串出現的計數

  和尋找類似,不過上面介紹的尋找的方法都只是找到第一個,如果我想知道某個特定的字元串在原字元中出現了多少次的時候怎麼辦,就可以使用計數了。

  5.1 S.count(sub[, start[, end]]) -> int 

   

 

    這個方法會找到範圍內所有指定的子字元串,返回其出現的次數,沒找到的話則返回0


 

 

6.字元的替換

  註意,雖然說是替換,但原字元串是不可變的,我在上篇也說過,字元串的所有方法都沒有改變原字元串本身,都是返回了一個新的對象。

  所謂的替換,只是針對於返回對象的效果而已。

  5.1 S.replace(old, new[, count]) -> string 

  

  

  可以看出原字元串本身是不變的,只是返回了一個新對象,這個對象在記憶體之中,如果後面要有利用這個新對象的話,可以將其賦值給變數,當然也可以當做函數的參數直接傳參,但傳參的時候要註意數據類型。

  其中,count 指定要替換的次數,不指定則全部替換

 


 

7.字元串中的對齊和填充等

  這裡的操作類似於在world中編輯文字,所以可以聯想理解。

  7.1 S.ljust(width[, fillchar]) -> string 

     左對齊

     首先要體現對齊的效果要有一個前提,那就是那一行不能是滿的,否則無論怎麼對齊也沒有用,而在python中,一個字元串對象預設就是占滿一行的,其行寬就是字元串是長度。

     但是,當我強制聲明這一行的寬度是多少,而這個寬度(width)大於原字元串的長度(小於無效,但不會報錯),此時對齊就有效果了。

    

      為了體現效果我將游標放上去了,否則都是空格看不出來。

    我們將一行的寬度設置為15,而原字元串我用 len()內置函數得出其長度,可以知道原字元串長度為11。當我指定一行長為15,並設置左對齊,右邊的多出來的位置就預設用空格填充了,當然我們也可以指定用什麼填充(fillchar),但只能是字元串類型。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 需要在程式中使用二維數組,網上找到一種這樣的用法: 1 2 3 4 5 6 #創建一個寬度為3,高度為4的數組 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4 1 2 3 4 5 6 #創建一個寬度為3,高度為4的 ...
  • 探完閉包[查看],再探命名空間。 對於命名空間,官方文檔已經說得很詳細[查看],我在這裡做了一下實踐和總結。 命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數或者類出現相同的名字,否則會產生一個致命的錯誤。這種情況下只要避免命名重覆就可以解決,最常見的一種做法是約定一個首碼。 例:項 ...
  • 還是從HelloWorld開始說吧... #include <stdio.h> int main(int argc, char* argv[]) { printf("Hello World!\n"); return 0; } 從源文件Hello.cpp編譯鏈接成Hello.exe,需要經歷如下步驟: ...
  • 給初學者之一:淺談java及應用學java 不知不覺也已經三年了 從不知java為何物到現在一個小小的j2ee項目經理雖說不上此道高手,大概也算有點斤兩了吧每次上網,泡bbs逛論壇,沒少去java相關的版面總體感覺初學者多,高手少,精通的更少由於我國高等教育制度教材陳舊,加上java自身發展不過十年 ...
  • 1 二叉樹的鏈式存儲 1.1 鏈式存儲 順序存儲對空間利用率較低,所以,二叉樹一般採用鏈式存儲結構,用一個鏈表來存儲一顆二叉樹。二叉鏈表至少包含3個域:數據域data,左指針域lchild和右指針域rchild,如果再加上一個指向雙親結點的指針就變成了三叉鏈表。 二叉樹的鏈式存儲結構如下: 根據完全 ...
  • C/C++ 預處理元編程 從一個問題開始 以下代碼存在結構性重覆,如何消除? ~~~cpp // EventId.h enum EventId { setupEventId = 0x4001, cfgEventId, recfgEventId, releaseEventId // ... }; ~~ ...
  • I am using `&`: why isn't the process running in the background? No problem. We won't show you that ad again. Why didn't you like it? Uninteresting Mi ...
  • 1.安裝方法1:Mac電腦上面安裝很簡單,直接下載需要的版本解壓即可: 下載網址 https://www.mongodb.com/download-center?jmp=nav#community 方法2: brew install mongodb 2. mongodb 數據預設存在/data/db ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...