Python字符串常用方法詳解

文章目錄

  • Python字符串常用方法詳解
    • 一、字符串大小寫轉換方法(常用)
      • 1. 基礎大小寫轉換
      • 2. 案例:驗證碼檢查(不區分大小寫)
    • 二、字符串查找與替換方法
      • 1. 查找相關方法
      • 2. 替換相關方法
    • 三、字符串判斷方法
      • 1. 內容判斷方法
    • 四、字符串分割與連接方法(常用)
      • 1. 分割方法
      • 2. 連接方法
    • 五、字符串修剪與填充方法
      • 1. 修剪方法
      • 2. 填充方法
    • 六、字符串編碼解碼方法
      • 1. 編碼方法
      • 2. 解碼方法
    • 七、字符串格式化方法
      • 1. 舊式格式化
      • 2. format方法
      • 3. f-string (Python 3.6+)
    • 八、實際應用案例
      • 案例1:文本分析工具
      • 案例2:密碼生成器
    • 九、總結

Python字符串常用方法詳解

字符串方法是Python編程中最常用的工具之一,它們就像字符串的"瑞士軍刀",能幫你完成各種文本處理任務。下面我將用通俗易懂的方式,結合大量代碼示例,詳細講解Python字符串的常用方法。

一、字符串大小寫轉換方法(常用)

1. 基礎大小寫轉換

方法作用示例結果
upper()全轉大寫"hello".upper()"HELLO"
lower()全轉小寫"HELLO".lower()"hello"
capitalize()首字母大寫"hello".capitalize()"Hello"
title()每個單詞首字母大寫"hello world".title()"Hello World"
swapcase()大小寫互換"PyThOn".swapcase()"pYtHoN"
# 實際應用:用戶名規范化
username = "jOhN dOe"
normalized = username.title()  # 轉為"John Doe"
print(f"歡迎, {normalized}!")

2. 案例:驗證碼檢查(不區分大小寫)

user_input = "AbCd"
correct_code = "aBcD"if user_input.lower() == correct_code.lower():print("驗證碼正確")
else:print("驗證碼錯誤")

二、字符串查找與替換方法

1. 查找相關方法

方法作用示例結果
find(sub)查找子串位置"apple".find("p")1
rfind(sub)從右查找子串"apple".rfind("p")2
index(sub)類似find但找不到會報錯"apple".index("p")1
rindex(sub)從右查找,找不到報錯"apple".rindex("p")2
count(sub)統計出現次數"banana".count("a")3
# 查找文件擴展名
filename = "report.pdf"
dot_index = filename.rfind(".")
if dot_index != -1:ext = filename[dot_index+1:]print(f"文件擴展名: {ext}")

2. 替換相關方法

方法作用示例結果
replace(old, new)替換子串"hello".replace("l", "L")"heLLo"
expandtabs(tabsize)替換tab為空格"a\tb".expandtabs(4)"a b"
# 敏感詞過濾
text = "這個產品太垃圾了!"
bad_words = ["垃圾", "廢物", "差勁"]
for word in bad_words:text = text.replace(word, "**")
print(text)  # 輸出: "這個產品太**了!"

三、字符串判斷方法

1. 內容判斷方法

方法作用示例結果
startswith(prefix)是否以某子串開頭"hello".startswith("he")True
endswith(suffix)是否以某子串結尾"world".endswith("ld")True
isalnum()是否字母或數字"abc123".isalnum()True
isalpha()是否全為字母"abc".isalpha()True
isdigit()是否全為數字"123".isdigit()True
isnumeric()是否數字字符"Ⅷ".isnumeric()True
isdecimal()是否十進制數字"12".isdecimal()True
isspace()是否全為空白字符" ".isspace()True
islower()是否全小寫"hello".islower()True
isupper()是否全大寫"HELLO".isupper()True
istitle()是否標題化(首字母大寫)"Hello".istitle()True
# 密碼強度驗證
password = "Passw0rd!"
has_upper = any(c.isupper() for c in password)
has_lower = any(c.islower() for c in password)
has_digit = any(c.isdigit() for c in password)
has_special = any(not c.isalnum() for c in password)print(f"密碼強度: {has_upper and has_lower and has_digit and has_special}")

四、字符串分割與連接方法(常用)

1. 分割方法

方法作用示例結果
split(sep)按分隔符分割"a,b,c".split(",")['a', 'b', 'c']
rsplit(sep)從右開始分割"a,b,c".rsplit(",", 1)['a,b', 'c']
splitlines()按行分割"第一行\n第二行".splitlines()['第一行', '第二行']
partition(sep)分成三部分"hello.world".partition(".")('hello', '.', 'world')
rpartition(sep)從右分成三部分"hello.world.py".rpartition(".")('hello.world', '.', 'py')
# 解析URL參數
url = "https://example.com?name=John&age=25"
_, params = url.split("?", 1)  # 分割一次
params_dict = dict(p.split("=") for p in params.split("&"))
print(params_dict)  # 輸出: {'name': 'John', 'age': '25'}

2. 連接方法

方法作用示例結果
join(iterable)連接字符串序列",".join(["a","b","c"])"a,b,c"
# 路徑拼接
parts = ["C:", "Users", "John", "Documents"]
path = "\\".join(parts)  # Windows路徑
print(path)  # 輸出: C:\Users\John\Documents

五、字符串修剪與填充方法

1. 修剪方法

方法作用示例結果
strip()去除兩端空白" hi ".strip()"hi"
lstrip()去除左端空白" hi ".lstrip()"hi "
rstrip()去除右端空白" hi ".rstrip()" hi"
# 清理用戶輸入
user_input = "  admin@example.com  "
clean_input = user_input.strip()
print(f"清理后: '{clean_input}'")  # 輸出: 'admin@example.com'

2. 填充方法

方法作用示例結果
center(width)居中填充"hi".center(10)" hi "
ljust(width)左對齊填充"hi".ljust(5)"hi "
rjust(width)右對齊填充"hi".rjust(5)" hi"
zfill(width)用0填充"42".zfill(5)"00042"
# 生成表格格式
products = [("蘋果", 5.5), ("香蕉", 3.2), ("橙子", 4.8)]
for name, price in products:print(f"{name.ljust(6)}: {str(price).rjust(5)}元")# 輸出:
# 蘋果  :   5.5元
# 香蕉  :   3.2元
# 橙子  :   4.8元

六、字符串編碼解碼方法

1. 編碼方法

方法作用示例結果
encode()轉為字節序列"你好".encode("utf-8")b'\xe4\xbd\xa0\xe5\xa5\xbd'

2. 解碼方法

方法作用示例結果
decode()字節轉字符串b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode("utf-8")"你好"
# 處理不同編碼的文本
text = "中文測試"
bytes_gbk = text.encode("gbk")  # 轉為GBK編碼
bytes_utf8 = text.encode("utf-8")  # 轉為UTF-8編碼print(f"GBK編碼: {bytes_gbk}")
print(f"UTF-8編碼: {bytes_utf8}")# 解碼回字符串
print(bytes_gbk.decode("gbk"))  # 輸出: 中文測試

七、字符串格式化方法

1. 舊式格式化

# %s 字符串, %d 整數, %f 浮點數
template = "姓名: %s, 年齡: %d, 工資: %.2f"
result = template % ("張三", 30, 8500.5)
print(result)  # 輸出: 姓名: 張三, 年齡: 30, 工資: 8500.50

2. format方法

# 位置參數
"{}的{}成績是{}".format("張三", "數學", 95)# 命名參數
"{name}的{subject}成績是{score}".format(name="李四", subject="英語", score=88
)# 數字格式化
"圓周率: {:.2f}".format(3.1415926)  # 輸出: 圓周率: 3.14
"金額: {:,}".format(1234567)  # 輸出: 金額: 1,234,567

3. f-string (Python 3.6+)

name = "王五"
age = 25
salary = 12000.5# 基礎用法
f"{name}今年{age}歲"# 表達式計算
f"明年{name}{age + 1}歲了"# 數字格式化
f"工資: {salary:,.2f}元"  # 輸出: 工資: 12,000.50元# 對齊
f"姓名: {name:<10} 年齡: {age:>5}"  # 左對齊和右對齊

八、實際應用案例

案例1:文本分析工具

def analyze_text(text):# 統計字符數char_count = len(text)# 統計單詞數word_count = len(text.split())# 統計句子數(簡單版)sentence_count = text.count('.') + text.count('!') + text.count('?')# 找出最長單詞words = text.replace(',', '').replace('.', '').split()longest_word = max(words, key=len) if words else ""return {"字符數": char_count,"單詞數": word_count,"句子數": sentence_count,"最長單詞": longest_word}result = analyze_text("Hello, world! This is a test.")
print(result)
# 輸出: {'字符數': 25, '單詞數': 5, '句子數': 2, '最長單詞': 'Hello'}

案例2:密碼生成器

import random
import stringdef generate_password(length=12):# 定義字符集lowercase = string.ascii_lowercaseuppercase = string.ascii_uppercasedigits = string.digitssymbols = "!@#$%^&*"# 確保每種類型至少一個字符password = [random.choice(lowercase),random.choice(uppercase),random.choice(digits),random.choice(symbols)]# 填充剩余長度all_chars = lowercase + uppercase + digits + symbolspassword.extend(random.choice(all_chars) for _ in range(length - 4))# 打亂順序random.shuffle(password)return ''.join(password)print(f"生成密碼: {generate_password()}")
# 示例輸出: 生成密碼: pA7^hK9$m2Lb

九、總結

Python字符串方法核心要點:

  1. 大小寫轉換upper(), lower(), title(), capitalize()
  2. 查找替換find(), index(), count(), replace()
  3. 內容判斷startswith(), isdigit(), isalpha(), isalnum()
  4. 分割連接split(), join(), partition()
  5. 修剪填充strip(), ljust(), center(), zfill()
  6. 格式化format(), f-string
  7. 編碼解碼encode(), decode()

掌握這些字符串方法,你就能高效處理各種文本操作任務,從簡單的字符串處理到復雜的數據清洗都能游刃有余!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81289.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81289.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81289.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MyBatis—動態 SQL

MyBatis—動態 SQL 一、動態 SQL 的核心作用 動態 SQL 主要解決以下問題&#xff1a; 靈活性&#xff1a;根據不同的輸入參數生成不同的 SQL 語句&#xff08;如條件查詢、批量操作&#xff09;。 可維護性&#xff1a;減少重復代碼&#xff0c;通過標簽化邏輯提高 SQL 可讀…

Python機器學習筆記(二十五、算法鏈與管道)

對于許多機器學習算法,特定數據表示非常重要。首先對數據進行縮放,然后手動合并特征,再利用無監督機器學習來學習特征。因此,大多數機器學習應用不僅需要應用單個算法,而且還需要將許多不同的處理步驟和機器學習模型鏈接在一起。Pipeline類可以用來簡化構建變換和模型鏈的…

YOLOv3深度解析:多尺度特征融合與實時檢測的里程碑

一、YOLOv3的誕生&#xff1a;繼承與突破的起點 YOLOv3作為YOLO系列的第三代算法&#xff0c;于2018年由Joseph Redmon等人提出。它在YOLOv2的基礎上&#xff0c;針對小目標檢測精度低、多類別標簽預測受限等問題進行了系統性改進。通過引入多尺度特征圖檢測、殘差網絡架構和獨…

已解決(親測有效!):安裝部署Docker Deskpot之后啟動出現Docker Engine Stopped!

文章目錄 已解決&#xff1a;安裝部署Docker Deskpot之后啟動出現Docker Engine Stopped&#xff01;個人環境介紹自己的解決問題思路&#xff08;詳細過程附截圖&#xff09;1.打開控制面板2.點擊程序和功能3.點擊啟動或關閉windows功能4.Hyper-V5.右鍵菜單欄的windows圖標點擊…

PCIE接收端檢測機制分析

PCIE接收端檢測機制分析 1、PCIE的接收端檢測機制 接收器檢測電路作為發射器的一部分實現&#xff0c;必須正確檢測是否存在與ZRX-DC參數&#xff08;40Ω-60Ω&#xff09;隱含的直流阻抗等效的負載阻抗。 接收器檢測序列的推薦行為如下&#xff1a; ?初始狀態?&#xff…

[模型部署] 3. 性能優化

&#x1f44b; 你好&#xff01;這里有實用干貨與深度分享?? 若有幫助&#xff0c;歡迎&#xff1a;? &#x1f44d; 點贊 | ? 收藏 | &#x1f4ac; 評論 | ? 關注 &#xff0c;解鎖更多精彩&#xff01;? &#x1f4c1; 收藏專欄即可第一時間獲取最新推送&#x1f514;…

InternVL3: 利用AI處理文本、圖像、視頻、OCR和數據分析

InternVL3推動了視覺-語言理解、推理和感知的邊界。 在其前身InternVL 2.5的基礎上,這個新版本引入了工具使用、GUI代理操作、3D視覺和工業圖像分析方面的突破性能力。 讓我們來分析一下是什么讓InternVL3成為游戲規則的改變者 — 以及今天你如何開始嘗試使用它。 InternVL…

鴻蒙 ArkUI - ArkTS 組件 官方 UI組件 合集

ArkUI 組件速查表 鴻蒙應用開發頁面上需要實現的 UI 功能組件如果在這 100 多個組件里都找不到&#xff0c;那就需要組合造輪子了 使用技巧&#xff1a;先判斷需要實現的組件大方向&#xff0c;比如“選擇”、“文本”、“信息”等&#xff0c;或者是某種形狀比如“塊”、“圖…

HTTP GET報文解讀

考慮當瀏覽器發送一個HTTP GET報文時&#xff0c;通過Wireshark 俘獲到下列ASCII字符串&#xff1a; GET /cs453/index.html HTTP/1.1 Host: gaia.cs.umass.edu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Acc…

【Linux網絡】數據鏈路層

數據鏈路層 用于兩個設備&#xff08;同一種數據鏈路節點&#xff09;之間進行傳遞。 認識以太網 “以太網” 不是一種具體的網絡&#xff0c;而是一種技術標準&#xff1b;既包含了數據鏈路層的內容&#xff0c;也包含了一些物理層的內容。例如&#xff1a;規定了網絡拓撲結…

【打破信息差】萌新認識與入門算法競賽

閱前須知 XCPC萌新互助進步群2??&#xff1a;174495261 博客主頁&#xff1a;resot (關注resot謝謝喵) 針對具體問題&#xff0c;應當進行具體分析&#xff1b;并無放之四海而皆準的方法可適用于所有人。本人尊重并支持每位學習者對最佳學習路徑的自主選擇。本篇所列訓練方…

logrotate按文件大小進行日志切割

? 編寫logrotate文件&#xff0c;進行自定義切割方式 adminip-127-0-0-1:/data/test$ cat /etc/logrotate.d/test /data/test/test.log {size 1024M #文件達到1G就切割rotate 100 #保留100個文件compressdelaycompressmissingoknotifemptycopytruncate #這個情況服務不用…

2025認證杯二階段C題完整論文講解+多模型對比

基于延遲估計與多模型預測的化工生產過程不合格事件預警方法研究 摘要 化工生產過程中&#xff0c;污染物濃度如SO?和H?S對生產過程的控制至關重要。本文旨在通過數據分析與模型預測&#xff0c;提出一種基于延遲估計與特征提取的多模型預測方法&#xff0c;優化閾值設置&a…

前端精度問題全解析:用“挖掘機”快速“填平精度坑”的完美解決方案

寫在前面 “為什么我的計算在 React Native 中總是出現奇怪的精度問題?” —— 這可能是許多開發者在作前端程序猿的朋友們都會遇到的第一個頭疼問題。本文將深入探討前端精度問題的根源,我將以RN為例,并提供一系列實用解決方案,讓你的應用告別計算誤差。 一、精度問題的…

2024 睿抗機器人開發者大賽CAIP-編程技能賽-本科組(國賽) 解題報告 | 珂學家

前言 題解 2024 睿抗機器人開發者大賽CAIP-編程技能賽-本科組(國賽)。 國賽比省賽難一些&#xff0c;做得汗流浹背&#xff0c;T_T. RC-u1 大家一起查作弊 分值: 15分 這題真的太有意思&#xff0c;看看描述 在今年的睿抗比賽上&#xff0c;有同學的提交代碼如下&#xff1…

hghac和hgproxy版本升級相關操作和注意事項

文章目錄 環境文檔用途詳細信息 環境 系統平臺&#xff1a;N/A 版本&#xff1a;4.5.6,4.5.7,4.5.8 文檔用途 本文檔用于高可用集群環境中hghac組件和hgproxy組件替換和升級操作 詳細信息 1.關閉服務 所有數據節點都執行 1、關閉hgproxy服務 [roothgdb01 tools]# system…

userfaultfd內核線程D狀態問題排查

問題現象 運維反應機器上出現了很多D狀態進程&#xff0c;也kill不掉,然后將現場保留下來進行排查。 排查過程 都是內核線程&#xff0c;先看下內核棧D在哪了&#xff0c;發現D在了userfaultfd的pagefault流程。 uffd知識補充 uffd探究 uffd在firecracker與e2b的架構下使…

深入解析:構建高性能異步HTTP客戶端的工程實踐

一、架構設計原理與核心優勢 HTTP/2多路復用技術的本質是通過單一的TCP連接并行處理多個請求/響應流&#xff0c;突破了HTTP/1.1的隊頭阻塞限制。在異步編程模型下&#xff0c;這種特性與事件循環機制完美結合&#xff0c;形成了高性能網絡通信的黃金組合。相較于傳統同步客戶…

根據臺賬批量制作個人表

1. 前期材料準備 1&#xff09;要有 人員總的信息臺賬 2&#xff09;要有 個人明白卡模板 2. 開始操作 1&#xff09;打開 人員總的信息臺賬&#xff0c;選擇所需要的數據模塊&#xff1b; 2&#xff09;點擊插入&#xff0c;選擇數據透視表&#xff0c;按流程操作&…

《AI大模型應知應會100篇》第65篇:基于大模型的文檔問答系統實現

第65篇&#xff1a;基于大模型的文檔問答系統實現 &#x1f4da; 摘要&#xff1a;本文詳解如何構建一個基于大語言模型&#xff08;LLM&#xff09;的文檔問答系統&#xff0c;支持用戶上傳 PDF 或 Word 文檔&#xff0c;并根據其內容進行智能問答。從文檔解析、向量化、存儲到…