python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...
python中的字符串
字符串基本特點
字符串的本質是字符序列。python中的字符串是不可變的,無法對原字符串做任何修改(不能用下標賦值的方式去改變字符串)。但是可以將字符串的一部分賦值創建新的字符串,達到“看起來修改”的效果。
a = "4541"
a[1] = "8"
# 程序報錯:TypeError: 'str' object does not support item assignment
注:python不支持單字符類型,單字符也是作為一個字符串使用的。
字符串的編碼
python3支持Unicode,Unicode可以表示世界上任何書面語言的字符。python3的字符默認就是16位Unicode編碼,ASCII碼是Unicode編碼的子集。
注:1. ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字符。占用0 - 127用來表示大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。
2. Unicode通常用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只需要把高字節全部填為0就可以。
3. 使用內置函數 ord() 可以把字符轉換成對應的Unicode碼;
4. 使用內置函數 chr() 可以把十進制數字轉換成對應的字符。
ord("A") # 65
chr(66) # “B"
字符串的創建
用單/雙引號創建字符串
空字符串和 len() 函數
python允許空字符串的存在,不包含任何字符且長度為0;
len() 函數用來計算字符串含有多少個字符(空格、\n、\t 也算一個字符)
c = ""
len(c) # 0
轉義字符
轉義字符
描述
\
續行符
\\
反斜杠符號
\‘
單引號
\"
雙引號
\b
退格
\n
換行
\t
橫向制表符
\r
回車
字符串常見操作
字符串拼接
可以使用 “+” 將多個字符串拼接起來。
注:
對于 “+” 運算符:
(1)+ 兩邊都是字符串,則字符串拼接;
(2)+ 兩邊都是數字,則進行加法運算;
(3)+ 兩邊類型不同,則拋出異常。
a = "a"
print(id(a)) # 2008317966448
a = a + "b"
print(id(a)) # 2008318085168
字符串復制
使用 "*"可以實現字符串復制,如
a = "hello" * 3
print(a) # hellohellohello
不換行打印
調用 print() 時,會自動打印一個換行符。當我們不想換行時,可以通過參數 end = "任意字符串”,實現末尾添加任何內容:
print("hello", end = " ") # 空格
print("hello", end = "#") # hello hello#
從控制臺讀取字符串
使用 input() 從控制臺讀取鍵盤輸入的內容,返回字符串類型:
user_name = input("請輸入用戶名:")
# 從鍵盤輸入的字符串返回給 user_name
其他類型數據轉換成字符串
使用 str() 函數可以將其他類型轉換為字符串類型。
數字類型轉換為字符串:
a = str(5.21)
print(type(a)) #
Bool型轉換為字符串:
a = str(True)
使用 [] 提取字符
字符串的本質是字符序列,可以通過在字符串后面添加 [] ,在 [] 里指定偏移量,可以提取該位置的單個字符。
正向搜索:最左側第一個字符,偏移量是0;
反向搜索:最右側一個字符,偏移量是-1。
a = "hello"
print(a[1]) # e
print(a[-2]) # l
replace() 替換字符串
字符串不可改變,不可通過下標賦值的方式去改變字符串,但是,有時確實需要替換某些字符,這時,只能通過用 replace() 創建新的字符串去實現。
a = "hello"
a.replace("e", "h") # hhllo
a.replace("l", "y") # hhyyo
注意:整個過程中,實際上是創建了新的字符串變量,并指向了變量a,而不是修改了以前的字符串(可用 id() 函數來驗證)。、
字符串切片
切片操作可以快速的提取子字符串,標準格式為:
[起始偏移量start:終止偏移量end:步長step]
注:包頭不包尾
操作
說明
[:]
提取全部字符串
[start:]
從start到結尾
[:end]
從0開始,到 end-1
[start:end]
從 start 到 end-1(包頭不包尾)
[-3:]
倒數三個
[-8 : -3]
倒數第八個到倒數第四個(包頭不包尾)
[::-1]
步長為負,從右向左反向提取
注意:切片操作時,起始偏移量不在[0,字符串長度-1]這個范圍內也不會報錯。起始偏移量小于0會被當做0,終止偏移量大于長度-1,會被當做長度-1.
split() 分割和 join() 合并
split() 可以基于指定分割符將字符串分隔成多個字符串(存儲到列表中),如果不指定分隔符,則默認使用空白字符(換行/空格/制表符)。
a = "to be or not to be"
print(a.split()) # ['to', 'be', 'or', 'not', 'to', 'be']
print(a.split("be")) # ['to ', ' or not to ', '']
join() 的作用與 split() 作用剛好相反,用于(用指定的字符)將一系列列表中子字符串連接起來。
a = ["to","be","or","not","to","be"]
print("*".join(a)) # to*be*or*not*to*be
拼接字符串要點:使用+拼接字符串,會生成新的字符串對象,因此不推薦;而使用join函數,會在拼接字符串之前計算所有字符串長度,然后逐一拷貝,僅新建一次對象。(在循環結構中循環拼接字符串 join() 占優勢,因為列表可變,字符串不可變)
字符串駐留機制和字符串比較
字符串駐留:僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串駐留池中。python支持字符串駐留機制,對于符合標識符規則的字符串(僅包含下滑下面、字母和數字)會啟用字符串駐留機制。(即相同的字符串只保留一份拷貝,后續創建相同字符串時,不會開辟新空間,而是把該字符串的地址賦給新創建的變量)
a = "abc_11"
b = "abc_11"
print(a is b) # True
c = "aa#"
d = "aa#"
print(c is d) # 命令行執行結果為False,pycharm執行結果為True
字符串比較和同一性:
=和!=比較的是字符串的內容;
is/is not 判斷兩個對象是否引用同一個對象(比較的是地址)
成員操作符
in / not in 關鍵字,判斷某個字符(子字符串)是否存在于字符串中。
字符串常用查找方法
方法
說明
len(a)
字符串長度
a.startswith(“hello”)
以指定字符串開頭(返回布爾型)
a.endswith(“world”)
以指定字符串結尾(返回布爾型)
a.find("我“)
第一次出現指定字符串的位置
a.rfind("我”)
最后一次出現指定字符串的位置
a.count("我“)
指定字符串出現了幾次
a.isalnum()
所有字符全是字母或數字
去除首尾信息
可以通過 strip() 去除字符串首尾指定信息,通過 lstrip() 去除字符串左邊指定信息,通過 rstrip() 去除字符串右邊指定信息。
”*s*i*x*".strip("*") # s*i*x
大小寫轉換
a = "i love you"
示例
說明
a.capitalize()
產生新的字符串,首字母大寫
a.title()
產生新的字符串,每個單詞都首字母大寫
a.upper()
產生新的字符串,所有字符全轉成大寫
a.lower()
產生新的字符串,所有字符全轉成小寫
a.swapcase()
產生新的字符串,所有字母大小寫互換
格式排版
center() 、ljust()、rjust() 這三個函數用于對字符串實現排版:
a = "six"
a = a.center(10,"*")
print(a) # ***six****
其他方法
isalnum() : 是否為字母或數字
isalpha() : 是否只由字母組成(含漢字)
isdigit() : 是否只由數字組成
isspace() : 是否為空白符(空格、\n等)
isupper(): 是否為大寫字母
islower(): 是否為小寫字母
字符串的格式化
用 str.format() 函數可以實現字符串的格式化。基本語法是通過 {} 和 : 來代替以前的 %。
format() 函數可以接受的參數個數不限,位置也可不按順序:
a = "名字是:{0},年齡是{1}"
print(a.format("小明", 11)) # 名字是:小明,年齡是11
b = "名字是{0},年齡是{1},{0}學習不錯”
print(b.format("小明”,11)) # 名字是小明,年齡是11,小明學習不錯
c = "名字是{name},年齡是{age}"
print(c.format(age = 11, name = "小明")) # 名字是小明,年齡是11
填充與對齊
填充與對齊常常一起使用。
^、分別是居中、左對齊、右對齊,后面帶寬度;
:后面帶填充的字符,只能是一個字符,不指定的話默認用空格填充
print("我是{0},有{1:*^8}萬存款".format("xiaoming","666"))
# 我是xiaoming,有**666***萬存款
數字格式化
浮點數通過f,整數通過d進行需要的格式化:
a = "我是{0},我的存款有{1:.2f}"
print(a.format("xiaoming", 4512.45896))
# 我是xiaoming,我的存款有4512.46
格式
描述
{:.2f}
保留小數點后兩位(四舍五入)
{:.0f}
不帶小數
{:.2%}
百分比格式(保留兩位小數)
可變字符串
python中字符串屬于不可變對象,不支持原地修改,若要修改其中的值,只能創建新的字符串對象。但確實需要原地修改字符串時,可以使用io.StringIO() 對象(生成一個新的可修改的字符串對象)或者 array 模塊。
import io
s = "hello"
sio = io.StringIO(s)
print(type(sio)) #
print(sio.getvalue()) # hello
sio.seek(2) # 移動到此處
sio.write("k")
print(sio.getvalue()) # heklo
本文地址:https://blog.csdn.net/weixin_43543210/article/details/107477121
如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網友為您解惑!
總結
以上是生活随笔為你收集整理的python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离散数学知识点总结(11)“关系” 知识
- 下一篇: python 实现拖拽验类型证码的图片定