var1 = 'Hello World!'
var2 = "Python Runoob"
print("var1[0]:", var1[0])
print("var2[1:5]:", var2[1:5])
var1 = 'Hello World!'
print("输出:", var1[:6] + 'Runoob!')
在需要时使用特殊字符,python 用反斜杠 ‘ \’ 转义字符
转义字符 | 描述 | 转义字符 | 描述 |
---|---|---|---|
\(在行尾时) | 续行符 | \\ | 反斜杠符号 |
\’ | 单引号 | \" | 双引号 |
\a | 响铃 | \b | 退格(Backspace) |
\e | 转义 | \000 | 空 |
\n | 换行 | \v | 纵向制表符 |
\t | 横向制表符 | \r | 回车 |
\f | 换页 | \oyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行 |
\xyy | 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行 | \other | 其它的字符以普通格式输出 |
下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”
a = 'Hello'
b = 'Python'
print(a+b) #HelloPython
print(a*2) #HelloHello
print(a[1]) #e
print(a[1:4]) #ell
print('H' in a) #True
print('M' not in a) #True
print(r'\n') #\n
print("%s %s"%(a,b)) #Hello Python
%c : 格式化字符及ASCII 码
%s:格式化字符串
%d:格式化整数
%u:格式化无符号整形
%o:格式化无符号八进制数
%x:格式化无符号十六进制数
%X:格式化无符号十六进制数(大写)
%f: 格式化浮点数,可指定小数后的精度
%e:科学计数法格式化浮点数
%p:十六进制格式化变量地址
Python 中定义一个 Unicode 字符串和定义一个普通字符串一样简单
print(u'hello python') # hello python
string.capitalize()
把字符串的第一个字符大写,返回一个新的字符串
案例
str ='hello python'
s = str.capitalize()
print(s) #Hello python
返回一个原字符串居中,并使用空格填充 width 的新字符串
s2 = str.center(20)
print(s2)# hello pyhton
string.encode(encoding=‘UTF-8’, errors=‘strict’)
string.decode(encoding=‘UTF-8’, errors=‘strict’)
功能:encode 以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
decode 以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’
案例1:
u = '中文'
str1 = u.encode('gb2312')
print(str1) #b'\xd6\xd0\xce\xc4'
str2 = u.encode('gbk')
print(str2) #b'\xd6\xd0\xce\xc4'
str3 = u.encode('utf-8')
print(str3) #b'\xe4\xb8\xad\xe6\x96\x87'
u1 = str1.decode('gb2312')
print(u1) #中文
u2 = str2.decode('gbk')
print(u2) #中文
u3 = str3.decode('utf-8')
print(u3) #中文
string.endswith(obj, beg=0, end=len(string))
功能:检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
参数:
suffix - - - - 该参数可以是一个字符串或者是一个元素
start - - - - - 字符串中的开始位置
end - - - - - - 字符中结束位置
返回值:如果字符串含有指定的后缀返回 True,否则返回 False
str = "this is string example....wow!!!"
suffix = "wow!!!"
print(str.endswith(suffix)) #True
print(str.endswith(suffix, 20)) #True
suffix = "is"
print(str.endswith(suffix, 2, 4))#True
print(str.endswith(suffix, 2, 6))#False
string.expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8
功能:expandtabs() 方法把字符串中的 tab 符号 \t 转为空格,tab 符号 \t 默认的空格数是 8,在第 0、8、16…等处给出制表符位置,如果当前位置到开始位置或上一个制表符位置的字符数不足 8 的倍数则以空格代替
语法 str.expandtabs(tabsize=8)
tabsize - - - - 指定转换字符串中的 tab 符号(’\t’)转为空格的字符数
返回值:该方法返回字符串中的 tab 符号(’\t’)转为空格后生成的新字符串
实例
str = "runoob\t12345\tabc"
print('原始字符串: {}'.format(str))
# 原始字符串: runoob 12345 abc
# 默认 8 个空格
# runnob 有 6 个字符,后面的 \t 填充 2 个空格
# 12345 有 5 个字符,后面的 \t 填充 3 个空格
print('替换 \\t 符号: {}'.format(str.expandtabs()))
# 替换 \t 符号: runoob 12345 abc
# 2 个空格
# runnob 有 6 个字符,刚好是 2 的 3 倍,后面的 \t 填充 2 个空格
# 12345 有 5 个字符,不是 2 的倍数,后面的 \t 填充 1 个空格
print('使用 2 个空格替换 \\t 符号: {}'.format(str.expandtabs(2)))
# 3 个空格
print('使用 3 个空格: {}'.format(str.expandtabs(3)))
# 4 个空格
print('使用 4 个空格: {}'.format(str.expandtabs(4)))
# 5 个空格
print('使用 5 个空格: {}'.format(str.expandtabs(5)))
# 6 个空格
print('使用 6 个空格: {}'.format(str.expandtabs(6)))
'''
原始字符串: runoob 12345 abc
替换 \t 符号: runoob 12345 abc
使用 2 个空格替换 \t 符号: runoob 12345 abc
使用 3 个空格: runoob 12345 abc
使用 4 个空格: runoob 12345 abc
使用 5 个空格: runoob 12345 abc
'''
find()方法
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回 -1
语法:str.find(str, beg=0, end=len(string))
参数:
str – 指定检索的字符串
beg – 开始索引,默认为0
end – 结束索引,默认为字符串的长度
返回值:如果包含子字符串返回开始的索引值,否则返回 -1
str1 = "this is string example....wow!!!"
str2 = "exam"
print(str1.find(str2)) #15
print(str1.find(str2, 10)) #15
print(str1.find(str2, 40)) #-1
info = 'abca'
print(info.find('a')) # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
print(info.find('a',1)) # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3
print(info.find('3')) # 查找不到返回-1
format 格式化函数
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能
基本语法是通过 {} 和 : 来代替以前的 %
format 函数可以接受不限个参数,位置可以不按顺序。
"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
#'hello world'
"{0} {1}".format("hello", "world") # 设置指定位置
#'hello world'
"{1} {0} {1}".format("hello", "world") # 设置指定位置
#'world hello world'
index()方法
跟find()方法一样,只不过如果str不在 string中会报一个异常.
str1 = "this is string example....wow!!!"
str2 = "exam"
print(str1.index(str2)) #15
print(str1.index(str2, 10)) #15
print(str1.index(str2, 40)) #抛出异常
Python isalnum() 方法检测字符串是否由字母和数字组成
无参数
实例:
str = ''
print(str.isalnum()) #False
如果字符串中有一个不是字母或者数字,则返回 False
string.isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True
如果有一个不是字母,则返回 False
string.isdecimal()
返回值如果 string 只包含十进制数字则返回 True 否则返回 False.
功能:isdecimal() 方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象
注意:定义一个十进制字符串,只需要在字符串前添加 ‘u’ 前缀即可
参数:无参数
实例
str = u"this2009";
print(str.isdecimal()) #False
str = u"23443434";
print(str.isdecimal()) #True
isdigit() 方法检测字符串是否只由数字组成
语法:str.isdigit()
参数:无
返回值:如果字符串只包含数字则返回 True 否则返回 False
空字符串返回 False
string.islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric()
区别
num = "1" #unicode
num.isdigit() # True
num.isdecimal() # True
num.isnumeric() # True
num = "1" # 全角
num.isdigit() # True
num.isdecimal() # True
num.isnumeric() # True
num = b"1" # byte
num.isdigit() # True
num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'
num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'
num = "IV" # 罗马数字
num.isdigit() # True
num.isdecimal() # False
num.isnumeric() # True
num = "四" # 汉字
num.isdigit() # False
num.isdecimal() # False
num.isnumeric() # True
isspace()方法
isspace() 方法检测字符串是否只由空格组成
str = " ";
print str.isspace(); #True
str = "This is string example....wow!!!";
print str.isspace(); #False
string.istitle()
如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False.
str = "This Is String Example...Wow!!!"
print str.istitle() #True
str = "This is string example....wow!!!"
print str.istitle() #False
Python isupper() 方法检测字符串中所有的字母是否都为大写
str = "THIS IS STRING EXAMPLE....WOW!!!";
print str.isupper(); #True
str = "THIS is string example....wow!!!";
print str.isupper(); #False
string.join(seq)
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符
# str.join(元组、列表、字典、字符串) 之后生成的只能是字符串。
# 所以很多地方很多时候生成了元组、列表、字典后,可以用 join() 来转化为字符串。
list=['1','2','3','4','5']
print(''.join(list))
# 结果:12345
seq = {
'hello':'nihao','good':2,'boy':3,'doiido':4}
print('-'.join(seq)) #字典只对键进行连接
# 结果:hello-good-boy-doiido
#实际应用开发时,获取应用的所有进程 ID,
# 然后杀掉所有进程,可以使用 join 拼接出 kill 命令。
pids = ['111','22']
s1 = 'kill %s' % ' '.join(['111','22']) #kill 111 22
# 然后使用以下这个杀掉进程
#subprocess.run('kill %s' % ' '.join(pids), shell=True)
#给定字符串倒序输出
str_1 = "abcdefgh"
len1 = len(str_1) - 1
str_list = []
while(len1 >= 0):
str_list.append(str_1[len1])
len1 = len1 - 1
print(str_list)
print(''.join(str_list))
string.ljust(width)
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
如果指定的长度小于原字符串的长度则返回原字符串
str = "this is string example....wow!!!"
print(str.ljust(50, '0'))
string.lower()
转换 string 中所有大写字符为小写
返回值:返回一个新的字符串,不会对源字符串进行修改
lstrip() 方法用于截掉字符串左边的空格或指定字符
str.lstrip([chars]) chars 为指定字符
str = " this is string example....wow!!! "
print(str.lstrip())
str = "88888888this is string example....wow!!!8888888"
print(str.lstrip('8'))
maketrans()方法
Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标
注:两个字符串的长度必须相同,为一一对应的关系。
参数
返回值:返回字符串转换后生成的新字符串
#python2.x 需要导入 maketrans
#from string import maketrans
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
print(str.translate(trantab))
string.partition(str)
来根据指定的分隔符将字符串进行分割
如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
参数:str 指定的分割符
str = "www.runoob.com"
print(str.partition("."))
# ('www', '.', 'runoob.com')
string.replace(str1, str2, num=string.count(str1))
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
old - - - - 将被替换的子字符串。
new - - - 新字符串,用于替换old子字符串。
max - - - 可选字符串, 替换不超过 max 次
返回值:返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次
str = "this is string example....wow!!! this is really string"
print(str.replace("is", "was"))
print(str.replace("is", "was", 3))
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
语法:str.split(str="", num=string.count(str))
实例
str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
print(str.split( )) # 以空格为分隔符,包含 \n
print(str.split(' ', 1 )) # 以空格为分隔符,分隔成两个
#['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
#['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", -1)
y = txt.split("#",1)
print(x)
print(y)
#['Google', 'Runoob', 'Taobao', 'Facebook']
#['Google', 'Runoob#Taobao#Facebook']
网页地址解析
str="http://www.runoob.com/python/att-string-split.html"
print("0:%s"%str.split("/")[-1])
print("1:%s"%str.split("/")[-2])
print("2:%s"%str.split("/")[-3])
print("4:%s"%str.split("/")[-5])
统计 n 出现的次数
str='ab2b3n5n2n67mm4n2'
count = len(str.split('n'))-1
print(count)
通过 join 实现 replace
astr = "hello world ,hhhh world heihei"
def myreplace (astr,oldstr,newstr):
result=astr.split(oldstr)
return newstr.join(result)
print(myreplace(astr,"world","job"))
splitlines()方法
splitlines() 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符
语法:str.splitlines([keepends])
keepends – 在输出结果里是否保留换行符(’\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符
返回值:返回一个包含各行作为元素的列表
str1 = 'ab c\n\nde fg\rkl\r\n'
print(str1.splitlines())
str2 = 'ab c\n\nde fg\rkl\r\n'
print(str2.splitlines(True))
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查
语法:str.startswith(str, beg=0,end=len(string))
参数:
str - - - - - - - 检测的字符串
strbeg - - - - 可选参数用于设置字符串检测的起始位置
strend - - - - 可选参数用于设置字符串检测的结束位置
返回值:如果检测到字符串则返回True,否则返回False
实例
str = "this is string example....wow!!!"
print(str.startswith( 'this' )) #True
print(str.startswith( 'is', 2, 4 )) #True
print(str.startswith( 'this', 2, 4 ))#False
strip()方法
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符
语法:str.strip([chars])
str = "00000003210Runoob01230000000"
print(str.strip('0')) # 去除首尾字符 0
str = "123abcrunoob321"
# 只要首位包含字符中的一个,就会被删除
print (str.strip( '1233455' ))
实例2:
str2 = '@@@@@iamstring@@@@@'
print("str2:\'%s\'" %str2) #'@@@@@iamstring@@@@@'
print("str2.strip('@'):\'%s\'" %str2.strip('@')) #'iamstring'
print("str2.strip('@@'):\'%s\'" %str2.strip('@@'))#'iamstring'
print("str2.strip('@@@@@@'):\'%s\'" %str2.strip('@@@@@@'))#'iamstring'
print("str2.strip('@i'):\'%s\'" %str2.strip('@i'))#'amstring'
print("str2.strip('@ag'):\'%s\'" %str2.strip('@g'))#'iamstrin'
string.swapcase() 翻转 string 中的大小写
string.title()
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
string.translate(str, del="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
str.translate(table [,deletechars])
返回值:返回翻译后的字符串
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
print(str.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!
string.upper() 转换 string 中的小写字母为大写
string.zfill(width)
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
实例
str = '123jfa'
s1 = str.zfill(20)
print(s1)#00000000000000123jfa