Python基本數據類型之字符串

Python中對字符串的應用是非常多的,所以,掌握字符串的屬性和常用函數是非常重要的,接下來就根據源碼中 class:str 類中給定的API來進行字符串的練習,本文對API中的函數做了詳細的中文解釋,多多練習並經常使用才能熟練運用

 

練習源碼:

# !/usr/bin/env python
# -*- coding:utf8 -*-
# 字符串:str
# 字符串一旦創建,不可修改
# 一旦修改,都會造成重新生成字符串

# <editor-fold desc="字符串定義">
# 字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。
# 查找和替換都是根據最長公共子序列,也就是子集中最長的來
print("---字符串定義練習---")
str1 = "\"Hello world\""
str2 = '\'WangDouDou\''
print("使用單引號定義:",  str2)
print("使用雙引號定義:",  str1)
# </editor-fold>


# <editor-fold desc="字符串轉義字符">
# 轉義字符	描述
# \(在行尾時)	續行符
# \\	反斜槓符號
# \'	單引號
# \"	雙引號
# \a	響鈴
# \b	退格(Backspace)
# \e	轉義
# \000	空
# \n	換行
# \v	縱向製表符
# \t	橫向製表符
# \r	回車
# \f	換頁
# \oyy	八進制數,yy代表的字符,例如:\o12代表換行
# \xyy	十六進制數,yy代表的字符,例如:\x0a代表換行
# \other	其它的字符以普通格式輸出
# </editor-fold>


# <editor-fold desc="字符串運算符">
# +	字符串連接	a + b 輸出結果: HelloPython
# *	重複輸出字符串	a*2 輸出結果:HelloHello
# []	通過索引獲取字符串中字符	a[1] 輸出結果 e
# [ : ]	截取字符串中的一部分,遵循左閉右開原則,str[0,2] 是不包含第 3 個字符的。	a[1:4] 輸出結果 ell
# in	成員運算符 - 如果字符串中包含給定的字符返回 True	'H' in a 輸出結果 True
# not in	成員運算符 - 如果字符串中不包含給定的字符返回 True	'M' not in a 輸出結果 True
# r/R	原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母 r(可以大小寫)以外,與普通字符串有着幾乎完全相同的語法。
# print( r'\n' )
# print( R'\n' )
print("\n---字符串運算符實例---")
a = "Hello"
b = "Python"

print("a + b 輸出結果:", a + b)
print("a * 2 輸出結果:", a * 2)
print("a[1] 輸出結果:", a[1])
print("a[1:4] 輸出結果:", a[1:4])

if "H" in a:
    print("H 在變量 a 中")
else:
    print("H 不在變量 a 中")

if "M" not in a:
    print("M 不在變量 a 中")
else:
    print("M 在變量 a 中")

print(r'\n')
print(R'\n')
# </editor-fold>


# <editor-fold desc="字符串格式化">
# Python支持格式化字符串的輸出.最基本的用法是將一個值插入到一個有字符串格式符 % s的字符串中
# 字符串格式化符號:
#     符號	        描述
#       %c	 格式化字符及其ASCII碼
#       %s	 格式化字符串
#       %d	 格式化整數
#       %u	 格式化無符號整型
#       %o	 格式化無符號八進制數
#       %x	 格式化無符號十六進制數
#       %X	 格式化無符號十六進制數(大寫)
#       %f	 格式化浮點數字,可指定小數點後的精度
#       %e	 用科學計數法格式化浮點數
#       %E	 作用同%e,用科學計數法格式化浮點數
#       %g	 %f和%e的簡寫
#       %G	 %f 和 %E 的簡寫
#       %p	 用十六進制數格式化變量的地址

# 格式化操作符輔助指令:
# 符號	功能
# *	定義寬度或者小數點精度
# -	用做左對齊
# +	在正數前面顯示加號( + )
# <sp>	在正數前面顯示空格
# #	在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'還是'X')
# 0	顯示的數字前面填充'0'而不是默認的空格
# %	'%%'輸出一個單一的'%'
# (var)	映射變量(字典參數)
# m.n.	m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

print("\n---字符串格式化練習---")
print("我叫 %s 今年 %d 歲!" % ('小明', 10))
# </editor-fold>


# <editor-fold desc="字符串三引號">
print("\n---字符串三引號練習---")
para_str = """這是一個多行字符串的實例
多行字符串可以使用製表符
TAB ( \t )。
也可以使用換行符 [ \n ]。
"""
print("使用三引號的輸出:\n",  para_str)
# </editor-fold>


# <editor-fold desc="常用字符串內建函數">
print("\n---常用字符串內建函數練習---")
# 字符串查找區間爲左閉右開的原則,例如(3,5)則從3開始且包含3,到5爲止蛋不包含5,即>=3且<5
m_strtest = "sTrTeSt"

print("capitalize():作用是首字母大寫,剩下的全小寫:", m_strtest.capitalize())

print("casefold():作用是將所有的字母轉換成小寫,包括已知的和未知的大小寫對應關係:", m_strtest.casefold())

print("lower():作用是將所有的字母轉換成小寫:", m_strtest.lower())
print("islower():作用是檢測字符串是否全部爲小寫:", m_strtest.islower())
print("upper():作用是將所有的字母轉換成大寫:", m_strtest.upper())
print("isupper():作用是檢測字符串是否全部爲大寫:", m_strtest.isupper())

print("center(self, width, fillchar=None):作用是將內容以指定寬度居中,其餘用指定單字符填充:", m_strtest.center(20, "*"))
print("ljust(self, width, fillchar=None):作用是將內容以指定寬度居左,其餘用指定單字符填充:", m_strtest.ljust(20, "*"))
print("rjust(self, width, fillchar=None):作用是將內容以指定寬度居右,其餘用指定單字符填充:", m_strtest.rjust(20, "*"))

print("count(self, sub, start=None, end=None):作用是查找指定字符在字符串中的個數,區分大小寫,默認從0開始到結尾,如果指定起始和終止索引,則按照指定索引區間查找個數:", m_strtest.count('s', 2, 6))

print("startswith(self, prefix, start=None, end=None):作用是判斷字符串是否以指定字符起始:", m_strtest.startswith('s'))
print("endswith(self, suffix, start=None, end=None):作用是判斷字符串是否以指定字符結尾:", m_strtest.endswith('r'))

print("find(self, sub, start=None, end=None):作用是查找指定字符的索引,默認從左到右,查找到第一個之後停止並輸出,如果指定起始和終止索引,則按照指定索引區間查找:", m_strtest.find('Te', 3, 4))

tempstr1 = "I am {0} , age {1}"
print("format(self, *args, **kwargs):格式化字符串,將字符串中的佔位符大括號內的值替換成指定值", tempstr1.format('wangdoudou', 25))

tempstr2 = "I am {name} , age {age}"
print("format_map(self, mapping):格式化字符串,將字符串中的佔位符大括號內的值以鍵值對形式替換成指定值", tempstr2.format_map({"name": 'wangdoudou', "age": 25}))

tempstr3 = "and798_+#"
print("isalnum():作用是檢測字符串中是否有除了數字和字母以外的字符,有,返回False,沒有,返回True:", tempstr3.isalnum())
print("isalpha():作用是檢測字符串中是否有除了字母和漢字以外的字符,有,返回False,沒有,返回True:", tempstr3.isalpha())

tempstr4 = "username\temail\tpassword\nwangdoudou\[email protected]\t8888\nwangdoudou\[email protected]\t8888\nwangdoudou\[email protected]\t8888"
print("expandtabs(self, tabsize=8):作用爲製表符\n", tempstr4.expandtabs(20))

tempstr5 = "123②二"
print("isdecimal():作用是判斷當前字符串中是否爲純十進制數字:", tempstr5.isdecimal())
print("isdigit():作用是判斷當前字符串中是否爲純數字和特殊數字字符類型的數字:", tempstr5.isdigit())
print("isnumeric():作用是判斷當前字符串中是否爲純數字和特殊數字字符和中文數字類型的數字:", tempstr5.isnumeric())

tempstr6 = "_def3"
print("isidentifier(): 作用是檢測字符串是否是標識符或者是否符合命名規範:", tempstr6.isidentifier())

tempstr7 = "ewrfewr\tdsf\ndf"
print("isprintable():作用是是否存在不可顯示的字符,例如\\t \\n:", tempstr7.isprintable())
print("isspace():作用是判斷字符串中知否全部都是空格:", tempstr7.isspace())

tempstr8 = "Return True if S is a titlecased string and there is at least one"
print("istitle():作用是判斷字符串是否每個單詞的首字母都是大寫:", tempstr8.istitle())
print("title():作用是將字符串中每個單詞的首字母都轉換成大寫:", tempstr8.title())

tempstr9 = "別在我的墳前哭,髒了我的輪迴路"
print("join(self, iterable):作用是將字符串中的每一個元素按照指定分隔符進行拼接:", "*".join(tempstr9))

tempstr10 = "  我就 呵呵 打死你  "
# 可以去除空格,也可指定要去除的字符
print("lstrip(self, chars=None):作用是去除字符串左邊的空格、換行符、製表符:", tempstr10.lstrip())
print("rstrip(self, chars=None):作用是去除字符串右邊的空格、換行符、製表符::", tempstr10.rstrip())
print("strip(self, chars=None):作用是去除字符串兩邊的空格、換行符、製表符,但是不包含中間的空格:", tempstr10.strip())

tempstr11 = str.maketrans("aeiou", "12345")  # maketrans(self, *args, **kwargs):建立一個對應關係,將前面的字符一一對應替換成後面的字符
print("translate(self, *args, **kwargs):作用是將字符串按照建立的對應關係進行替換:", "sdfdadsf,hjfkilh,mdgolfhiv,dudbnb".translate(tempstr11))

tempstr12 = "asdfdsghjklnscvfdg"
print("partition(self, *args, **kwargs):作用是從左邊開始找到第一個分隔符後進行分割,分成三部分,前,分隔符,後:", tempstr12.partition('s'))
print("rpartition(self, *args, **kwargs):作用是從右邊開始找到第一個分隔符後進行分割,分成三部分,前,分隔符,後:", tempstr12.rpartition('s'))
print("split(self, *args, **kwargs):作用是找到所有的分隔符進行分割,如果指定參數,則按照指定的個數分割成n+1份,分隔符去除", tempstr12.split('s', 2))
print("rsplit(self, *args, **kwargs):從右邊開始分割,作用同split一樣", tempstr12.rsplit('s', 2))

tempstr13 = "dsfgsd\nfdghdf\nytkiyt\nytijytyt"
print("splitlines(self, *args, **kwargs):作用是隻根據換行符\\n進行分割,參數True顯示\\n,False不顯示\\n:", tempstr13.splitlines(True))

tempstr14 = "waNgDoUdou"
print("swapcase(self, *args, **kwargs):作用是將字符串中的大寫轉換成小寫,小寫轉換成大寫:", tempstr14.swapcase())

tempstr15 = "wangdoudououdoud"
print("replace(self, *args, **kwargs):作用是用新字符串替換指定的字符串,默認全部替換,如果指定個數,則根據指定個數替換", tempstr15.replace("ou", "he", 3))

# </editor-fold>


# <editor-fold desc="字符串常用操作">
print("\n---字符串常用操作練習---")
teststr = 'wangdoudou'

print("輸出第一個到倒數第二個的所有字符:", teststr[0:-1])
print("輸出字符串第一個字符:", teststr[0])
print("輸出從第三個開始到第五個的字符:", teststr[2:5])
print("輸出從第三個開始的後的所有字符:", teststr[2:])
print("輸出字符串兩次:", teststr * 2)
print("連接字符串:", teststr + "TEST")
print("字符串字符個數:", len(teststr))
# </editor-fold>

 

 

輸出結果示例:


---字符串定義練習---
使用單引號定義: 'WangDouDou'
使用雙引號定義: "Hello world"

---字符串運算符實例---
a + b 輸出結果: HelloPython
a * 2 輸出結果: HelloHello
a[1] 輸出結果: e
a[1:4] 輸出結果: ell
H 在變量 a 中
M 不在變量 a 中
\n
\n

---字符串格式化練習---
我叫 小明 今年 10 歲!

---字符串三引號練習---
使用三引號的輸出:
 這是一個多行字符串的實例
多行字符串可以使用製表符
TAB (      )。
也可以使用換行符 [ 
 ]。


---常用字符串內建函數練習---
capitalize():作用是首字母大寫,剩下的全小寫: Strtest
casefold():作用是將所有的字母轉換成小寫,包括已知的和未知的大小寫對應關係: strtest
lower():作用是將所有的字母轉換成小寫: strtest
islower():作用是檢測字符串是否全部爲小寫: False
upper():作用是將所有的字母轉換成大寫: STRTEST
isupper():作用是檢測字符串是否全部爲大寫: False
center(self, width, fillchar=None):作用是將內容以指定寬度居中,其餘用指定單字符填充: ******sTrTeSt*******
ljust(self, width, fillchar=None):作用是將內容以指定寬度居左,其餘用指定單字符填充: sTrTeSt*************
rjust(self, width, fillchar=None):作用是將內容以指定寬度居右,其餘用指定單字符填充: *************sTrTeSt
count(self, sub, start=None, end=None):作用是查找指定字符在字符串中的個數,區分大小寫,默認從0開始到結尾,如果指定起始和終止索引,則按照指定索引區間查找個數: 0
startswith(self, prefix, start=None, end=None):作用是判斷字符串是否以指定字符起始: True
endswith(self, suffix, start=None, end=None):作用是判斷字符串是否以指定字符結尾: False
find(self, sub, start=None, end=None):作用是查找指定字符的索引,默認從左到右,查找到第一個之後停止並輸出,如果指定起始和終止索引,則按照指定索引區間查找: -1
format(self, *args, **kwargs):格式化字符串,將字符串中的佔位符大括號內的值替換成指定值 I am wangdoudou , age 25
format_map(self, mapping):格式化字符串,將字符串中的佔位符大括號內的值以鍵值對形式替換成指定值 I am wangdoudou , age 25
isalnum():作用是檢測字符串中是否有除了數字和字母以外的字符,有,返回False,沒有,返回True: False
isalpha():作用是檢測字符串中是否有除了字母和漢字以外的字符,有,返回False,沒有,返回True: False
expandtabs(self, tabsize=8):作用爲製表符
 username            email               password
wangdoudou          [email protected]      8888
wangdoudou          [email protected]      8888
wangdoudou          [email protected]      8888
isdecimal():作用是判斷當前字符串中是否爲純十進制數字: False
isdigit():作用是判斷當前字符串中是否爲純數字和特殊數字字符類型的數字: False
isnumeric():作用是判斷當前字符串中是否爲純數字和特殊數字字符和中文數字類型的數字: True
isidentifier(): 作用是檢測字符串是否是標識符或者是否符合命名規範: True
isprintable():作用是是否存在不可顯示的字符,例如\t \n: False
isspace():作用是判斷字符串中知否全部都是空格: False
istitle():作用是判斷字符串是否每個單詞的首字母都是大寫: False
title():作用是將字符串中每個單詞的首字母都轉換成大寫: Return True If S Is A Titlecased String And There Is At Least One
join(self, iterable):作用是將字符串中的每一個元素按照指定分隔符進行拼接: 別*在*我*的*墳*前*哭*,*髒*了*我*的*輪*回*路
lstrip(self, chars=None):作用是去除字符串左邊的空格、換行符、製表符: 我就 呵呵 打死你  
rstrip(self, chars=None):作用是去除字符串右邊的空格、換行符、製表符::   我就 呵呵 打死你
strip(self, chars=None):作用是去除字符串兩邊的空格、換行符、製表符,但是不包含中間的空格: 我就 呵呵 打死你
translate(self, *args, **kwargs):作用是將字符串按照建立的對應關係進行替換: sdfd1dsf,hjfk3lh,mdg4lfh3v,d5dbnb
partition(self, *args, **kwargs):作用是從左邊開始找到第一個分隔符後進行分割,分成三部分,前,分隔符,後: ('a', 's', 'dfdsghjklnscvfdg')
rpartition(self, *args, **kwargs):作用是從右邊開始找到第一個分隔符後進行分割,分成三部分,前,分隔符,後: ('asdfdsghjkln', 's', 'cvfdg')
split(self, *args, **kwargs):作用是找到所有的分隔符進行分割,如果指定參數,則按照指定的個數分割成n+1份,分隔符去除 ['a', 'dfd', 'ghjklnscvfdg']
rsplit(self, *args, **kwargs):從右邊開始分割,作用同split一樣 ['asdfd', 'ghjkln', 'cvfdg']
splitlines(self, *args, **kwargs):作用是隻根據換行符\n進行分割,參數True顯示\n,False不顯示\n: ['dsfgsd\n', 'fdghdf\n', 'ytkiyt\n', 'ytijytyt']
swapcase(self, *args, **kwargs):作用是將字符串中的大寫轉換成小寫,小寫轉換成大寫: WAnGdOuDOU
replace(self, *args, **kwargs):作用是用新字符串替換指定的字符串,默認全部替換,如果指定個數,則根據指定個數替換 wangdhedhehedoud

---字符串常用操作練習---
輸出第一個到倒數第二個的所有字符: wangdoudo
輸出字符串第一個字符: w
輸出從第三個開始到第五個的字符: ngd
輸出從第三個開始的後的所有字符: ngdoudou
輸出字符串兩次: wangdoudouwangdoudou
連接字符串: wangdoudouTEST
字符串字符個數: 10
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章