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é)果: