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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...