Python標準庫筆記(1) — string模塊

来源:http://www.cnblogs.com/jhao/archive/2017/01/23/6344869.html
-Advertisement-
Play Games

String模塊包含大量實用常量和類,以及一些過時的遺留功能,並還可用作字元串操作。 1. 常用方法 常用方法描述 str.capitalize() 把字元串的首字母大寫 str.center(width) 將原字元串用空格填充成一個長度為width的字元串,原字元串內容居中 str.count(s ...


String模塊包含大量實用常量和類,以及一些過時的遺留功能,並還可用作字元串操作。

1. 常用方法

常用方法描述
str.capitalize() 把字元串的首字母大寫
str.center(width) 將原字元串用空格填充成一個長度為width的字元串,原字元串內容居中
str.count(s) 返回字元串s在str中出現的次數
str.decode(encoding=’UTF-8’,errors=’strict’) 以指定編碼格式解碼字元串
str.encode(encoding=’UTF-8’,errors=’strict’) 以指定編碼格式編碼字元串
str.endswith(s) 判斷字元串str是否以字元串s結尾
str.find(s) 返回字元串s在字元串str中的位置索引,沒有則返回-1
str.index(s) 和find()方法一樣,但是如果s不存在於str中則會拋出異常
str.isalnum() 如果str至少有一個字元並且都是字母或數字則返回True,否則返回False
str.isalpha() 如果str至少有一個字元並且都是字母則返回True,否則返回False
str.isdigit() 如果str只包含數字則返回 True 否則返回 False
str.islower() 如果str存在區分大小寫的字元,並且都是小寫則返回True 否則返回False
str.isspace() 如果str中只包含空格,則返回 True,否則返回 False
str.istitle() 如果str是標題化的(單詞首字母大寫)則返回True,否則返回False
str.isupper() 如果str存在區分大小寫的字元,並且都是大寫則返回True 否則返回False
str.ljust(width) 返回一個原字元串左對齊的並使用空格填充至長度width的新字元串
str.lower() 轉換str中所有大寫字元為小寫
str.lstrip() 去掉str左邊的不可見字元
str.partition(s) 用s將str切分成三個值
str.replace(a, b) 將字元串str中的a替換成b
str.rfind(s) 類似於 find()函數,不過是從右邊開始查找
str.rindex(s) 類似於 index(),不過是從右邊開始
str.rjust(width) 返回一個原字元串右對齊的並使用空格填充至長度width的新字元串
str.rpartition(s) 類似於 partition()函數,不過是從右邊開始查找
str.rstrip() 去掉str右邊的不可見字元
str.split(s) 以s為分隔符切片str
str.splitlines() 按照行分隔,返回一個包含各行作為元素的列表
str.startswith(s) 檢查字元串str是否是以s開頭,是則返回True,否則返回False
str.strip() 等於同時執行rstrip()和lstrip()
str.title() 返回”標題化”的str,所有單詞都是以大寫開始,其餘字母均為小寫
str.upper() 返回str所有字元為大寫的字元串
str.zfill(width) 返回長度為 width 的字元串,原字元串str右對齊,前面填充0

2.字元串常量

常數含義
string.ascii_lowercase 小寫字母’abcdefghijklmnopqrstuvwxyz’
string.ascii_uppercase 大寫的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.ascii_letters ascii_lowercase和ascii_uppercase常量的連接串
string.digits 數字0到9的字元串:’0123456789’
string.hexdigits 字元串’0123456789abcdefABCDEF’
string.letters 字元串’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.lowercase 小寫字母的字元串’abcdefghijklmnopqrstuvwxyz’
string.octdigits 字元串’01234567’
string.punctuation 所有標點字元
string.printable 可列印的字元的字元串。包含數字、字母、標點符號和空格
string.uppercase 大學字母的字元串’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.whitespace 空白字元 ‘\t\n\x0b\x0c\r ‘

3.字元串模板Template

通過string.Template可以為Python定製字元串的替換標準,下麵是具體列子:

>>>from string import Template
>>>s = Template('$who like $what')
>>>print s.substitute(who='i', what='python')
i like python

>>>print s.safe_substitute(who='i') # 缺少key時不會拋錯
i like $what

>>>Template('${who}LikePython').substitute(who='I') # 在字元串內時使用{}
'ILikePython'

Template還有更加高級的用法,可以通過繼承string.Template, 重寫變數delimiter(定界符)和idpattern(替換格式), 定製不同形式的模板。

import string

template_text = '''
    Delimiter : $de
    Replaced : %with_underscore
    Ingored : %notunderscored
'''

d = {'de': 'not replaced',
     'with_underscore': 'replaced',
     'notunderscored': 'not replaced'}

class MyTemplate(string.Template):
    # 重寫模板 定界符(delimiter)為"%", 替換模式(idpattern)必須包含下劃線(_)
    delimiter = '%'
    idpattern = '[a-z]+_[a-z]+'

print string.Template(template_text).safe_substitute(d)  # 採用原來的Template渲染

print MyTemplate(template_text).safe_substitute(d)  # 使用重寫後的MyTemplate渲染

輸出:


    Delimiter : not replaced
    Replaced : %with_underscore
    Ingored : %notunderscored

    Delimiter : $de
    Replaced : replaced
    Ingored : %notunderscored

可以看出原生的Template只會渲染界定符為$的情況,重寫後的MyTemplate會渲染界定符為%且替換格式帶有下劃線的情況。


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

-Advertisement-
Play Games
更多相關文章
  • 以前如果需要讓網頁過幾秒自動刷新一次,我都會在頁面通過JS調用setTimeout來做,最近發現原來伺服器通過添加響應頭部信息來提示瀏覽器需要在多少時間之後重新載入頁面。 代碼很簡單: 上述代碼指定瀏覽器在5秒後重新載入當前頁面。 需要註意的是,單位是秒。 這種方式未必就比JS的方式更有優勢,但是至 ...
  • 1、問題描述 原開發環境:Win7 64位旗艦版,VS2010,ThinkPad T460 出現問題:自己開發的MFC程式在WinXP環境下無法正常運行,彈框“無法定位程式輸入點InitializeConditionVariable於動態鏈接庫kernel32.dll” 重新搭建開發環境:WinXP ...
  • 簡介 該頭文件包含兩個概念相似的容器 map 、 multimap 。 而這兩個容器反映的概念就是 映射 。 這兩個容器 相同 的屬性有: 關聯性 映射 動態增長 鍵(Key)唯一性 這兩個 不相同 的屬性是: 映射關係 ![][maps image] 容器類別 既然說到關聯性容器,自然得說說標準庫 ...
  • 請實現一個函數,將一個字元串中的空格替換成“%20”。例如,當字元串為We Are Happy.則經過替換之後的字元串為We%20Are%20Happy。 以下是java.lang.StringBuilder.replace()方法的聲明 參數 start -- 這是開始索引(包括)。 end -- ...
  • 前段時間在想Kafka怎麼監控、怎麼知道生產的消息或消費的消費是否有丟失,目前有幾個開源的Kafka監控框架這裡整理了下,不過這幾個框架都有各自的問題側重點不一樣; 1、Kafka Monitor 2、Availability Monitor for Kafka 3、Kafka Web Consol ...
  • 在 github 發現一個 Ansible 任務計時插件“ansible-profile”,安裝這個插件後會顯示 ansible-playbook 執行每一個任務所花費的時間。Github 地址: https://github.com/jlafon/ansible-profile 。 這個插件安裝很 ...
  • hibernate的命名策略,可以減少對資料庫標識符命名的維護,進一步減少這部份命名的重覆性代碼量,以提高維護。 hibernate的命名方式,有兩類,一類是顯式命名,一類是隱式命名。 顯式命名:在映射配置時,設置的資料庫表名,列名等,就是進行顯式命名。 隱式命名:顯式命名一般不是必要的,所以可以選 ...
  • 一.問題 隨著電腦革命的發展,“不安全”的編程方式已逐漸成為編程代價高昂的主因之一。 初始化和清理正是涉及安全的兩個問題。 二.java 解決方案 構造器:一種特殊的方法。java 中”初始化“和”創建“捆綁在一起,兩者不能分離。 垃圾回收器:釋放無用的對象。 三.方法重載 為什麼要在這裡講方法重 ...
一周排行
    -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# ...