Python基礎(chǔ)(12)-字符串數(shù)據(jù)類型及其所具備的方法

12.1-創(chuàng)建字符串:

第一種方式:

>>> s = "hello world"
>>> type(s)
<class 'str'>

第二種方式:

>>> s = str("hello world")
>>> type(s)
<class 'str'>

12.2-字符串(str)內(nèi)部方法介紹:

capitalize(self):

說明:首字母變大寫帮匾。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc"

# capitalize() 表示首字母變大寫
s2 = s1.capitalize()
print(s2)

運行結(jié)果:

casefold(self):

說明:字符串變小寫两踏,Unicode 編碼中凡是有對應(yīng)的小寫形式的鞠柄,都會轉(zhuǎn)換。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "ABC"

# casefold() 表示字符串變小寫
s2 = s1.casefold()
print(s2)

運行結(jié)果:

center(self, width, fillchar=None):

說明:內(nèi)容居中非迹, width 定義總長度,fillchar 表示空白處填充內(nèi)容,默認無咳燕。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc"

# 內(nèi)容居中,總長度為 20 乒躺,填充內(nèi)容為 "*"
s2 = s1.center(20,"*")
print(s2)

運行結(jié)果:

count(self, sub, start=None, end=None):

說明:查看指定子序列在字符串中出現(xiàn)的次數(shù)招盲, sub 表示要指定的子序列, start 指定開始搜索的位置嘉冒,默認從第一個字符開始曹货,第一個字符索引位置為0, end 指定結(jié)束搜索的位置讳推,默認為最后一位顶籽。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查看 "b" 在這個字符串里出現(xiàn)的次數(shù)
s2 = s1.count("b")
print(s2)

# 指定范圍,查看 "b" 在這個字符串里出現(xiàn)的次數(shù)
s3 = s1.count("b",2,5)
print(s3)

運行結(jié)果:

encode(self, encoding='utf-8', errors='strict'):

說明:以指定的編碼格式編碼字符串银觅,編碼后的字符串是一個 bytes 對象礼饱, encoding 表示要使用的編碼,默認為 utf-8 究驴, errors 指定不同的錯誤處理方案镊绪。

注:由于Python3中字符串沒有 decode() 方法,所以可以使用 bytes 對象的 decode() 方法來進行解碼洒忧。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"

s2_utf = s1.encode("utf-8")
print("utf-8編碼:",s2_utf)

s3_gbk = s1.encode("gbk")
print("gbk編碼:",s3_gbk)

s4_utf = s2_utf.decode("utf-8")
print("utf-8解碼:",s4_utf)

s5_gbk = s3_gbk.decode("gbk")
print("gbk解碼:",s5_gbk)

運行結(jié)果:

endswith(self, suffix, start=None, end=None):

說明:判斷字符串是否以xxx結(jié)尾蝴韭,如果是以xxx結(jié)尾返回 True ,否則返回 False 跑慕, suffix 表示指定后綴 start 表示開始的位置, end 表示結(jié)束的位置摧找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查看這個字符串是否以 "abc" 結(jié)尾
s2 = s1.endswith("abc")
print(s2)

# 指定范圍核行,查看這個字符串是否以 "c" 結(jié)尾
s3 = s1.endswith("c",0,6)
print(s3)

# 指定范圍,查看這個字符串是否以 "c" 結(jié)尾
s4 = s1.endswith("b",0,6)
print(s4)

運行結(jié)果:

expandtabs(self, tabsize=8):

說明:將字符串中的 tab 符號(即制表符 \t )蹬耘,轉(zhuǎn)換成空格芝雪, tabsize 表示將字符串中的一個 tab 符號轉(zhuǎn)換為多少個空格,默認為8個综苔。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc\tabc"

# 將一個 tab 符號 (即制表符 \t ) 轉(zhuǎn)換為 20 個空格
s2 = s1.expandtabs(20)
print(s2)

運行結(jié)果:

find(self, sub, start=None, end=None):

說明:在字符串中查找指定子序列的位置惩系,如果存在返回指定子序列的索引值位岔,否則返回-1, sub 表示指定的子序列堡牡, start 表示開始的位置抒抬, end 表示結(jié)束的位置。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "c" 所在的位置(從左往右查找晤柄,找到第一個后就不會往下繼續(xù)查找了)
s2 = s1.find("c")
print(s2)

#指定范圍查找 "c" 所在的位置
s3 = s1.find("c",3,6)
print(s3)

# 如果 "d" 不存在字符串中擦剑,就會返回 -1
s4 = s1.find("d")
print(s4)

運行結(jié)果:

format(*args, **kwargs):

說明:字符串格式化,動態(tài)參數(shù)芥颈。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 如果不設(shè)置指定位置惠勒,按默認順序("{}" 相當于占位符)
s1 = "Hello {} , Hello {}"
s2 = s1.format("World","China")
print(s2)

# 如果設(shè)置指定位置,可以不按順序
s3 = "Hello {1} , Hello {0} , Hello {1}"
s4 = s3.format("World","China")
print(s4)

運行結(jié)果:

format_map(self, mapping):

說明:字符串格式化爬坑,和 format(*args, **kwargs) 類似纠屋,只不過 mapping 是一個字典對象。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
dic = {
    "name" : "L",
    "age" : 18
}
s1 = "hello {name} , age {age}".format_map(dic)
print(s1)

運行結(jié)果:

index(self, sub, start=None, end=None):

說明:與 find() 類似盾计,在字符串中查找指定子序列的位置售担,如果存在返回指定子序列的索引值,否則報錯闯估,sub 表示指定的子序列灼舍, start 表示開始的位置, end 表示結(jié)束的位置涨薪。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "d" 的位置骑素,如果沒有找到報錯
s2 = s1.index("d")
print(s2)

運行結(jié)果:

isalnum(self):

說明:判斷字符串是否是字母和數(shù)字的任意組合,如果是返回 True 刚夺,否則返回 False 献丑。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 是 字母 和 數(shù)字 的任意組合,返回 True
s1 = "abcabc123"
s2 = s1.isalnum()
print(s2)

# 只包含字母或數(shù)字 返回 True
s3 = "abc".isalnum()
print(s3)
s4 = "123".isalnum()
print(s4)

# 如包含空格侠姑、小數(shù)點等符號則返回 False
s5 = "abc 123".isalnum()
print(s5)
s6 = "abc123.".isalnum()
print(s6)

運行結(jié)果:

isalpha(self):

說明:判斷字符串是否只由字母組成创橄,如果是返回 True ,否則返回 False 莽红。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 字母 返回 True
s1 = "abcabc"
s2 = s1.isalpha()
print(s2)

# 包含 字母 和 數(shù)字 返回 False
s3 = "abc123".isalpha()
print(s3)

運行結(jié)果:

isdecimal(self):

說明:判斷字符串是否只包含十進制數(shù)字妥畏,如果是返回 True ,否則返回 False 安吁,定義一個十進制字符串醉蚁,只需要在字符串前添加 'u' 前綴即可

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 十進制數(shù)字 返回 True
s1 = "123".isdecimal()
print(s1)

# 包含 其它 返回 False
s2 = "root123".isdecimal()
print(s2)

運行結(jié)果:

isdigit(self):

說明:判斷字符串是否只由數(shù)字組成,如果是返回 True 鬼店,否則返回 False 网棍。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 數(shù)字 返回 True
s1 = "123".isdecimal()
print(s1)

# 包含 其它 返回 False
s2 = "root123".isdecimal()
print(s2)

運行結(jié)果:

isidentifier(self):

說明:判斷字符串是否為合法的標識符,如果是返回 True 妇智,否則返回 False 滥玷。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "statr".isidentifier()
print(s1)

s2 = "start_123".isidentifier()
print(s2)

s3 = "123start".isidentifier()
print(s3)

s4 = "start#".isidentifier()
print(s4)

運行結(jié)果:

islower(self):

說明:判斷字符串中所有字母是否為小寫氏身,如果是返回 True ,否則返回 False 惑畴。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 都是小寫蛋欣,返回 True
s1 = "abcabc".islower()
print(s1)

# 包含數(shù)字、中文桨菜,但是字母為小寫豁状,返回 True
s2 = "abc123中文".islower()
print(s2)

# 只要有一個字母為大寫,則返回 False
s3 = "aBc".islower()
print(s3)

運行結(jié)果:

isnumeric(self):

說明:字符串是否只由數(shù)字組成倒得。這種方法是只針對unicode對象泻红,定義一個字符串為Unicode,只需要在字符串前添加 'u' 前綴即可霞掺。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只由 數(shù)字 組成 返回 True
s1 = u"123456".isnumeric()
print(s1)

# 包含 數(shù)字 和 字母 返回 False
s2 = u"abc123".isnumeric()
print(s2)

運行結(jié)果:

isprintable(self):

說明:判斷字符串中所有的字符是否為可打印字符或字符串為空谊路,如果是返回 True ,否則返回 False 菩彬。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 可打印缠劝,返回 True
s1 = "abc123".isprintable()
print(s1)

# 字符串為空,返回 True
s2 = "".isprintable()
print(s2)

運行結(jié)果:

isspace(self):

說明:判斷字符串是否全部為空格骗灶,如果是返回 True 惨恭,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 全部為 空格 返回 True
s1 = "             ".isspace()
print(s1)

#不全部為 空格 返回 False
s2 = "abc    123".isspace()
print(s2)

運行結(jié)果:

istitle(self):

說明:判斷字符串是否為標題耙旦,如果是返回 True 脱羡,否則返回 False ,所有首字母大寫的為標題免都。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 為 標題 返回 True
s1 = "Abc".istitle()
print(s1)

# 為 標題 返回 True
s2 = "Abc Abc".istitle()
print(s2)

# 不為 標題 返回 False
s3 = "ABc".istitle()
print(s3)

運行結(jié)果:

isupper(self):

說明:判斷字符串中的所有字符是否為大寫锉罐,如果是返回 True ,否則返回 False 绕娘。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 字母 全部為 大寫 返回 True
s1 = "ABCABC".isupper()
print(s1)

# 字母 和 數(shù)字 組合 脓规,字母為大寫 返回 True
s2 = "ABC123".isupper()
print(s2)

# 字母 其中有小寫 返回 False
s3 = "ABCabc".isupper()
print(s3)

運行結(jié)果:

join(self, iterable):

說明:用指定字符串,將可迭代對象拼接起來并生成一個新的字符串险领, iterable 表示接受可迭代的對象侨舆。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
l1 = ["abc","def","ghi"]

# 這個方法會去循環(huán) "l1" 中的每一個元素,讓元素與元素之間通過 "_" 拼接起來绢陌,并變成字符串
s1 = "_".join(l1)
print(s1)

運行結(jié)果:

ljust(self, width, fillchar=None):

說明:內(nèi)容左對齊挨下, width 定義總長度,fillchar 表示右側(cè)空白處填充內(nèi)容下面,默認無复颈。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 內(nèi)容左對齊绩聘,總長度為 20 沥割,填充內(nèi)容為 "_"
s2 = s1.ljust(20,"_")
print(s2)

運行結(jié)果:

lower(self):

說明:字符串變小寫耗啦,對 ASCII 編碼的字母有效。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "ABC"

# lower() 表示字符串變小寫
s2 = s1.lower()
print(s2)

運行結(jié)果:

lstrip(self, chars=None):

說明:截掉字符串左側(cè)的空格或指定字符机杜, chars 表示指定截掉的字符帜讲,默認為空格。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉左側(cè)空格
s1  = "       abcabc"
s2 = s1.lstrip()
print(s2)

# 截掉左側(cè)指定字符 "*"
s3 = "***abcabc"
s4 = s3.lstrip("*")
print(s4)

運行結(jié)果:

maketrans(self, *args, **kwargs):

說明:創(chuàng)建字符映射的轉(zhuǎn)換表椒拗,以供 translate 方法使用似将,如果接收兩個參數(shù),字符串的長度必須相等蚀苛,而且兩個參數(shù)需要形成映射在验,第一個參數(shù)是字符串表示需要轉(zhuǎn)換的字符,第二個參數(shù)也是字符串表示轉(zhuǎn)換后的字符堵未。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 根據(jù) maketrans() 創(chuàng)建一個轉(zhuǎn)換表
dic = str.maketrans("ac","xl")

# 根據(jù) translate() 進行轉(zhuǎn)換
s2 = s1.translate(dic)
print(s2)

運行結(jié)果:

partition(self, sep):

說明:根據(jù)指定分隔符將字符串分割為前腋舌、中、后三部分渗蟹,并返回一個元組块饺, sep 表示指定分隔符。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc def ghi"

# 根據(jù) "def" 進行分割為三部分雌芽,并生成一個元組
s2 = s1.partition("def")
print(s2)
print(type(s2))

運行結(jié)果:

replace(self, old, new, count=None):

說明:將字符串中的字符進行替換授艰, old 表示將被替換的字符, new 表示替換后的字符世落, count 表示替換的次數(shù)淮腾,默認全部替換。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabcabc"

#將 "ab" 全部替換為 "cc"
s2 = s1.replace("ab","cc")
print(s2)

#從左側(cè)開始替換岛心,只替換兩個
s3 = s1.replace("ab","cc",2)
print(s3)

運行結(jié)果:

rfind(self, sub, start=None, end=None):

說明:和 find() 類似来破,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值忘古,否則返回-1徘禁,只不過是從右側(cè)開始查找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "c" 所在的位置(從右往左查找)
s2 = s1.rfind("c")
print(s2)

#指定范圍查找 "c" 所在的位置
s3 = s1.rfind("c",3,6)
print(s3)

# 如果 "d" 不存在字符串中髓堪,就會返回 -1
s4 = s1.rfind("d")
print(s4)

運行結(jié)果:

rindex(self, sub, start=None, end=None):

說明:和index() 類似送朱,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值干旁,否則報錯驶沼,只不過是從右側(cè)開始查找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "d" 的位置争群,如果沒有找到報錯(從右側(cè)開始查找)
s2 = s1.rindex("d")
print(s2)

運行結(jié)果:

rjust(self, width, fillchar=None):

說明:內(nèi)容右對齊回怜, width 定義總長度,fillchar 表示左側(cè)空白處填充內(nèi)容换薄,默認無翔试。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 內(nèi)容右對齊复旬,總長度為 20 ,填充內(nèi)容為 "_"
s2 = s1.rjust(20,"_")
print(s2)

運行結(jié)果:

rpartition(self, sep):

說明:和 partition() 類似驹碍,根據(jù)指定分隔符將字符串分割為前、中怔球、后三部分,并返回一個元組浮还,只不過是從右側(cè)開始查找分隔符。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc abc ghi"

# 根據(jù) "abc" 進行分割為三部分流码,并生成一個元組(從右側(cè)開始查找分隔符)
s2 = s1.rpartition("abc")
print(s2)
print(type(s2))

運行結(jié)果:

rsplit(self, sep=None, maxsplit=-1):

說明:從右到左通過指定分隔符對字符串進行切片漫试,并返回一個列表驾荣, sep 表示指定分割符普泡,默認為空格撼班, maxsplit 表示分割次數(shù)砰嘁,默認全部分割矮湘。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc_def_ghi"

# 根據(jù) "_" 進行分割,并返回一個列表
s2 = s1.rsplit("_")
print(s2)
print(type(s2))

# 指定了分割次數(shù)(從右側(cè)開始查找分隔符)
s3 = s1.rsplit("_",1)
print(s3)
print(type(s3))

運行結(jié)果:

rstrip(self, chars=None):

說明:和 lstrip() 類似磕蛇,截掉字符串右側(cè)的空格或指定字符, chars 表示指定截掉的字符秀撇,默認為空格捌袜。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉右側(cè)空格
s1  = "abcabc       "
s2 = s1.rstrip()
print(s2)

# 截掉右側(cè)指定字符 "*"
s3 = "abcabc***"
s4 = s3.rstrip("*")
print(s4)

運行結(jié)果:

split(self, sep=None, maxsplit=-1):

說明:和 rsplit() 類似虏等,從左到右通過指定分隔符對字符串進行切片霍衫,并返回一個列表敦跌, sep 表示指定分割符柠傍,默認為空格辩稽, maxsplit 表示分割次數(shù)逞泄,默認全部分割喷众。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc_def_ghi"

# 根據(jù) "_" 進行分割到千,并返回一個列表
s2 = s1.split("_")
print(s2)
print(type(s2))

# 指定了分割次數(shù)(從左側(cè)開始查找分隔符)
s3 = s1.split("_",1)
print(s3)
print(type(s3))

運行結(jié)果:

splitlines(self, keepends=None):

說明:根據(jù)換行進行分割愈涩,并返回一個列表加矛, keepends 表示列表中是否包含換行符斟览,默認不包含。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = """abc
def
ghi"""

# 根據(jù)換行分割 返回一個包含各行作為元素的列表,換行符不包括在結(jié)果列表里
l1 = s1.splitlines()
print(l1)

# 參數(shù) keepends 為 True 則包含換行符 否則 不包含換行符
l2 = s1.splitlines(1)
print(l2)

運行結(jié)果:

startswith(self, prefix, start=None, end=None):

說明:判斷字符串是否是以指定字符開頭,如果是返回 True 稍计,start 表示開始的位置裕循, end 表示結(jié)束的位置剥哑。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "hello world"

# 查看這個字符串是否以 "he" 開頭
s2 = s1.startswith("he")
print(s2)

# 指定范圍株婴,查看這個字符串是否以 "l" 開頭
s3 = s1.startswith("l",4,7)
print(s3)

運行結(jié)果:

strip(self, chars=None):

說明:和 lstrip() 大审、 rstrip() 類似座哩,截掉字符串左右兩側(cè)的空格或指定字符八回, chars 表示指定截掉的字符缠诅,默認為空格管引。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉左右兩側(cè)側(cè)空格
s1  = "       abcabc       "
s2 = s1.strip()
print(s2)

# 截掉左右兩側(cè)指定字符 "*"
s3 = "***abcabc***"
s4 = s3.strip("*")
print(s4)

運行結(jié)果:

swapcase(self):

說明:字符串的大小寫字母進行轉(zhuǎn)換谅将,大寫變小寫重慢,小寫變大寫似踱。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcABC"

#大寫變小寫,小寫變大寫
s2 = s1.swapcase()
print(s2)

運行結(jié)果:

title(self):

說明:返回 標題化 的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫匾二。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "hEelo woRld"
s2 = s1.title()
print(s2)

運行結(jié)果:

translate(self, table):

說明:根據(jù)參數(shù) table 給出的表將字符串中的字符進行轉(zhuǎn)換察藐, table 表示轉(zhuǎn)換表,就是通過maketrans方法創(chuàng)建的表浆竭。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 根據(jù) maketrans() 創(chuàng)建一個轉(zhuǎn)換表
dic = str.maketrans("ac","xl")

# 根據(jù) translate() 進行轉(zhuǎn)換
s2 = s1.translate(dic)
print(s2)

運行結(jié)果:

upper(self):

說明:將字符串中的小寫字母轉(zhuǎn)換為大寫字母邦泄。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 將小寫字母 轉(zhuǎn)換為 大寫字母
s2 = s1.upper()
print(s2)

運行結(jié)果:

zfill(self, width):

說明:返回指定長度的字符串,原字符串右對齊蕉拢,左側(cè)填充 "0" 晕换,width 定義總長度。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 原字符串右對齊益愈,左側(cè)填充 "0"
s2 = s1.zfill(20)
print(s2)

運行結(jié)果:

12.3-索引:

可以根據(jù)每個元素的位置索引來找到對應(yīng)的元素,位置索引又稱為下標摸袁,下標都是從 0 開始的义屏。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串中的第一個元素
print("第一個元素:",s1[0])

# 獲取字符串中的第四個元素
print("第四個元素:",s1[3])

# 獲取字符串中最后一個元素
print("最后一個元素:",s1[-1])

# 獲取字符串中倒數(shù)第三個元素
print("倒數(shù)第三個元素:",s1[-3])

運行結(jié)果:

12.4-查看字符串長度:

可以通過 len() 函數(shù)來查看字符串的長度膀曾。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串的長度
print(len(s1))

運行結(jié)果:

12.5-切片:

即指定范圍來獲取多個元素添谊, s1[2:8:2] 第一個數(shù)字表示起始下標稱為 下限 斩狱,第二個數(shù)字表示結(jié)束下標稱為 上限 所踊,第三個數(shù)字表示間隔數(shù)稱為 步長 秕岛,默認步長為 1 继薛,表示下限和上限之間的每一個元素都會出現(xiàn)在結(jié)果中遏考。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串中前三個元素
print("前三個元素:",s1[0:3])

# 從頭開始獲取時灌具,可以忽略 下限
print("忽略下限:",s1[:3])

#取全部咖楣,不能填寫 -1
print("取全部填寫-1的:",s1[:-1])
print("取全部未填寫-1的:",s1[0:])

#每隔兩個兩個元素就獲取一個
print("隔兩個元素:",s1[::3])

運行結(jié)果:

12.6-str類型和bytes類型相互轉(zhuǎn)換

UTF-8 編碼截歉,一個漢字三個字節(jié)瘪松,以 GBK 編碼宵睦,一個漢字兩個字節(jié)壳嚎,一個字節(jié)是八位。

Python 3.5.1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "zhongwen"
for i in s1:
    print(i)

s2 = "中文"
for i in s2:
    print(i)

運行結(jié)果:

通過上面的實例可以看出然磷,在 Python 3.5.1 姿搜,通過 for 循環(huán)字符串時舅柜,不管是字母還是中文致份,都是一個字符一個字符輸出的氮块。

Python 2.7.2:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "zhongwen"
for i in s1:
    print(i)

s2 = "中文"
for i in s2:
    print(i)

運行結(jié)果:

通過上面的實例可以看出雇锡,而在 Python 2.7.2 中,通過 for 循環(huán)字符串時芳悲,是按照字節(jié)進行輸出的名扛,所以在輸出中文的時候是亂碼肮韧,因為 UTF-8 編碼弄企,一個漢字是三個字節(jié)拘领,所以會輸出六個亂碼的字符约素。

str類型和bytes類型相互轉(zhuǎn)換:

Python 3.5.1 中圣猎,既可以把字符轉(zhuǎn)換成字節(jié)样漆,也可以把字節(jié)轉(zhuǎn)換成字符放祟,通過 bytes() 函數(shù)即可跪妥,可以將字符串轉(zhuǎn)換成字節(jié)眉撵。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中"
for i in s1:
    print(i)
    b1 = bytes(i,encoding="utf-8")

#輸出十六進制纽疟,"\xe4"是十六進制的字符
    print(b1)

# 字節(jié)默認是以 十六進制 表示污朽,而用 for 循環(huán)輸出每一個元素的時候蟆肆,默認會輸出 十進制
# "228" 表示 十進制炎功,"0b11100100" 表示 二進制
for s in b1:
    print("十進制:",s,"二進制:",bin(s))

運行結(jié)果:

def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__
    """
    str(object='') -> str
    str(bytes_or_buffer[, encoding[, errors]]) -> str

說明:通過源碼可以看出蛇损,str 接受兩個參數(shù)時淤齐,第一個參數(shù)需要是 bytes 對象床玻, encoding 表示以什么編碼將字節(jié)轉(zhuǎn)換成字符串贫堰。

>>> b1 = bytes("中文",encoding="gbk")
>>> b1
b'\xd6\xd0\xce\xc4'
>>> s1 = str(b1,encoding="gbk")
>>> s1
'中文'

12.7-練習題:

通過while循環(huán)輸出a其屏、b偎行、c....案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
start = 0
while start < len(s1):
    print(s1[start])
    start += 1

運行結(jié)果:

通過for循環(huán)輸出a蛤袒、b妙真、c....案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    print(i)

運行結(jié)果:

通過for循環(huán)遇到c不輸出案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    if i == "c":
        continue
    print(i)

運行結(jié)果:

通過for循環(huán)只輸出a案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    if i == "b":
        break
    print(i)

運行結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市薄料,隨后出現(xiàn)的幾起案子摄职,更是在濱河造成了極大的恐慌琳钉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溯壶,死亡現(xiàn)場離奇詭異且改,居然都是意外死亡又跛,警方通過查閱死者的電腦和手機慨蓝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門弧满,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庭呜,“玉大人募谎,你說我怎么就攤上這事近哟〖矗” “怎么了戳玫?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長府阀。 經(jīng)常有香客問我试浙,道長,這世上最難降的妖魔是什么田巴? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮艘刚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笛臣。我一直安慰自己沈堡,他們只是感情好诞丽,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懂衩,像睡著了一般浊洞。 火紅的嫁衣襯著肌膚如雪法希。 梳的紋絲不亂的頭發(fā)上苫亦,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天屋剑,我揣著相機與錄音唉匾,去河邊找鬼卫病。 笑死,一個胖子當著我的面吹牛蟀苛,可吹牛的內(nèi)容都是我干的益咬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帜平,長吁一口氣:“原來是場噩夢啊……” “哼幽告!你這毒婦竟也來了梅鹦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤齐唆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冻河,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箍邮,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年叨叙,在試婚紗的時候發(fā)現(xiàn)自己被綠了锭弊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡擂错,死狀恐怖味滞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钮呀,我是刑警寧澤剑鞍,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爽醋,受9級特大地震影響攒暇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜子房,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一形用、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦鸭廷、人聲如沸幕庐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至送讲,卻和暖如春奸笤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哼鬓。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工监右, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人异希。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓健盒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扣癣,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容