python-字符串内置方法

str.capitalize()


首字母大写

>>> "test".capitalize()
'Test'

str.casefold()


string_data = "ABcdefG"

print(string_data.casefold())  # abcdefg
print(string_data.lower())  # abcdefg
# python3.3
string_data = 'ß'
print(string_data.lower()) # ß
print(string_data.casefold()) # ss

str.center(width[,fillchar])


按照给定字符和总宽度居中显示。

string_data = 'test'
data = string_data.center(10, "*")
print(data, len(data))   # ***test*** 10

str.count(sub,start,end)


子字符串在原字符串中的个数。

  • sub:需要搜索的字符串
  • 字符串开始搜索的范围,默认是01
  • 字符串结束搜索的范围,没有返回-1
>>> 'atesta'.count('a')
2
>>> 'hello world '.count("l", 4)
1

str.encode(encoding="utf-8", errors="strict")


encoding -- 编码方式
errors -- 错误的处理方案。默认为 'strict',是编码错误引起一个UnicodeError,其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

data = string_data.encode()  # b'test'
print(data)
data = string_data.encode(encoding='ascii')  # b'test'
print(data)

str.endswith(suffix, start, end)


如果字符串含有指定的后缀返回True,否则返回False。

  • suffix :子字符串
  • start -- 长字符串中的开始位置,默认0
  • end -- 长字符中结束位置,默认最后
data = "test"
data1 = data.endswith('t')
print(data1)  # True
data2 = data.endswith('test')
print(data2)  # True
data3 = data.endswith('s')
print(data3)  # False
data3 = data.endswith('s', 1, 2)
print(data3)  # False

str.expandtabs(tabsize=8)


把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。

data = '01\t012\t0123\t01234'
data1 = data.expandtabs()
print(data1)  # 01      012     0123    01234

data = '01\t012\t0123\t01234'
data1 = data.expandtabs(16)
print(data1)  # 01              012             0123            01234 

str.find(str, beg=0, end=len(string))


检测字符串中是否包含子字符串 str ,beg(开始)到end(结束) 如果包含子字符串,则返回开始的(最小的)索引值,没有找到则返回-1。默认为0和最后。

data = 'B,b,cdEfcg'
res = data.find('c', 6, 9)
print(res)  # 8
res1 = data.find('c')
print(res1)  # 4
res2 = data.find('w')
print(res2)  # -1 

str.format(*args, kwargs)


字符串格式化,通过{}代替传统的%.*arg表示不可变参数--元组,**kwargs表示可变参数--字典

info ="name:{},age:{},sex:{}".format("Tom", 12, 'man')
print(info)  # name:Tom,age:12,sex:man

info1 ="name:{0},age:{1},sex:{2}".format("Tom", 12, 'man')
print(info1) # name:Tom,age:12,sex:man

info2 ="name:{name},age:{age},sex:{sex}".format(name="Tom", age=12, sex='man')

print(info2) # name:Tom,age:12,sex:man

info3 ="name:{name},age:{age},sex:{sex},test_name:{name}".format(name="Tom", age=12, sex='man')

print(info3) # name:Tom,age:12,sex:man,test_name:Tom

数字格式化format()


print("{:+.2f}".format(3.1415926))  # +3.14
print("{:.2f}".format(3.1415926))  # 3.14
print("{:.2f}".format(1))  # 1.00
print('{}:{{0}}'.format("大括号转义")) # 大括号转义:{0}
数字 格式 输出 描述
3.1415926 3.14 保留小数点后两位
3.1415926 +3.14 带符号保留小数点后两位
-1 -1.00 带符号保留小数点后两位
2.71828 3 不带小数
5 05 数字补零 (填充左边, 宽度为2)
5 5xxx 数字补x (填充右边, 宽度为4)
10 10xx 数字补x (填充右边, 宽度为4)
1000000 1,000,000 以逗号分隔的数字格式
0.25 25.00% 百分比格式
1000000000 1.00e+09 指数记法
13 13 右对齐 (默认, 宽度为10)
13 13 左对齐 (宽度为10)
13 13 中间对齐 (宽度为10)
11 '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11) 1011 11 13 b 0xb 0XB

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格b、d、o、x 分别是二进制、十进制、八进制、十六进制。

str.index(str, beg=0, end=len(string))


与str.find类似,区别在于,index如果找不到要寻到的字符,会得到ValueError,而find则返回-1。

  • str:指定检索的字符串
  • beg: 开始索引,默认为0。
  • end:结束索引,默认为字符串的长度
>>> "test".index("t")
0
>>> "test".index("a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

str.isanum()


如果 string 至少有一个字符并且所有字符都是字母或数字则返
回 True,否则返回 False

>>> str = 'this2019'
>>> str.isalnum()
True
>>> str = 'this   2019'
>>> str.isalnum()
False

str.isalpha()

检测字符串是否只由字母组成。

>>> str = 'test'
>>>> str1='this 2019'
>>> str.isalpha()
True
>>> str1.isalpha()
False

str.isdecimal()


如果 string 只包含十进制数字则返回 True 否则返回 False。

>>> str1.isdecimal()
True
>>> str2='this2019'
>>> str2.isdecimal()
False

str.isdigit()


如果 string 只包含数字则返回 True 否则返回 False.

>>> str = 'test'
>>>> str1='this 2019'
>>> str1.isdigit()
True
>>> str2.isdigit()
False

str.isnumeric()


如果 string 中只包含数字字符,则返回 True,否则返回 False

>>> str = 'test'
>>>> str1='this 2019'
>>> str1.isnumeric()
True
>>> str2.isnumeric()
False

str.isidentifier()


判断变量名是否合法。

data = 'class'
res = data.isidentifier()
print(res)  # True

data1 = 'False'
res1= data1.isidentifier()

print(res1)  #True

data2 = "123"
res3 = data2.isidentifier()

print(res3)  # False

print( "3a".isidentifier() ) # False
print( "".isidentifier() ) # False

print("_".isidentifier()) # True

str.islower()


如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

print("Test".islower())  # False
print("test...".islower())  # True

print("this iS ".islower())  # False

str.isprintable()


判断是不是都为可见/可打印字符。

print("test".isprintable())  # True
print("Te\tst".isprintable())  # False
print("Te\nst".isprintable())  # False

str.isspace()


判断是否为空格字符(注意不是空)。

print("".isspace()) # False
print(" test".isspace())  # False
print("test".isspace())  # False
print(" ".isspace())  # True  空格

str.istitle()


判断字符串能不能做标题。

print("Test".istitle())  #True

print("test".istitle())  # False
print("This is a test".istitle()) # False
print("This Is A Test".istitle())   # True

str.title()


把字符串变为标题格式。

data = "this is a test"
print(data.title())

data1 = "test....".title()
print(data1)  # Test....

str.isupper()


如果字符串中的所有字符都是大写,并且至少有一个字符,则返回True,否则返回False。

print("TEST".isupper())  #  True
print("test".isupper())  # False
print("Test IS ".isupper())  # False

str.join(string)


以str作为分隔符,将string所有的元素合并成一个新的字符串。若string为空,则TypeError。

print("+".join("Test"))  # T+e+s+t

print("__".join("This is a test"))  # T__h__i__s__ __i__s__ __a__ __t__e__s__t
list=['1','2','3','4','5']
print(''.join(list)) # 12345

str.ljust(width,fillchar)


得到一个原始字符串左对齐,并使用fiichar填充至指定长度的新字符串。若指定的长度小于原字符串的长度则返回原始字符串。与format的填充用法相似。

print("test".ljust(10, "+"))  # test++++++
print("this is a test".ljust(10, "+"))  # this is a test
print(len("test".ljust(10, "+")),"test".ljust(10, "+"))  #10 test++++++

str.rjust(width,fillchar)


得到一个原始字符串左对齐,并使用fiichar填充至指定长度的新字符串。若指定的长度小于原字符串的长度则返回原始字符串。与format的填充用法相似。

print("test".rjust(10, "+"))  # ++++++test
print("this is a test".rjust(10, "+"))  # this is a test
print(len("test".rjust(10, "+")),"test".rjust(10, "+"))  #10 ++++++test

str.lower()


把所有字母转化为小写,与str.upper()相对,与str.casefold()区别。

print("TEST".lower())  # test
print("This Is A Test".lower()) # this is a test
print("test".lower())  #test

str.upper()


把所有字母转化为大写。

print("TEST".upper())  # TEST
print("This Is A Test".upper()) # THIS IS A TEST
print("test".upper())  # TEST

str.lstrip(chars)


删除str左边所有出现在chars子字符串,chars为空时默认空格字符。

print(len("   test"),len("   test".lstrip()), "   test".lstrip())  # 7 4 test
print("tttttttest".lstrip("t"))  # est

str.rstrip(chars)


与str.lstrip(chars)对应且方法一致,删除str右边所有出现在chars子字符串,chars为空时默认空格字符

print(len("test     "),len("test     ".rstrip()), "   test".lstrip())  # 9 4 test
print("tttttttest".rstrip("t"))  # tttttttes

str.strip(chars)


与str.lstrip(chars)和str.rstrip(chars)用法一致,这个是删除两边所有出现在chars子字符串,chars为空时默认空格字符

print("   t est  ".strip())  # t est
print("TTTTTTTTTTTTRRRRRTTTTTT".strip("T"))  # RRRRR
print("test__".strip("_"))  # test

str.maketrans(intab,outtab)


得到一个用于str.translate()的映射,其实就是一个字典。
intab--是原始字符
outtab--翻译后的字符,长度与in相等


intab = "abcde"
outtab = "12345"
name = "asdwgwegb"
x = ''.maketrans(intab, outtab)
data  = name.translate(x)

print(data)

str.translate()


x就是maketrans得到的字典,字典中的映射是字符对应的Unicode编码。

intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)  # 制作翻译表

str = "this is string example....wow!!!"
print(str.translate(trantab)) #  th3s 3s str3ng 2x1mpl2....w4w!!!

str.partition(char)


有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.

print("Test".partition("e"))  # ('T', 'e', 'st')
# 三元分割
print("This is a test".partition(" "))  # ('This', ' ', 'is a test')  #
print("a, b, c".partition(','))  # ('a', ',', ' b, c')

str.split(char,count)


以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串

txt = "Google#Runoob#Taobao#Facebook"

# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)  # ['Google', 'Runoob#Taobao#Facebook
print(x)
y = txt.split("#")  # ['Google', 'Runoob', 'Taobao', 'Facebook']
print(y)

str.rpartition(char)


用法与str.partition(char)一致,str.rpartition(char)根据字符串char分割str得到一个3元素元组(只识别最后一次出现的字符串)。char不能为空

print(s.split('a'))

a = 'A, B, C'
print(a.rpartition(','))  # ('A, B', ',', ' C')
b = "test TEST "
print(b.rpartition(' '))  # ('test TEST', ' ', '')

str.rsplit(char,count)


与str.split用法一致,但是str.rsplit是从后往前工作,str.split是签到后工作。

print(S.rsplit())  # ['this', 'is', 'string', 'test!']
print(S.rsplit('i', 1))   # ['this is str', 'ng test!']
print(S.rsplit('w')) # ['this is string test!']

str.splitlines(keepends)


keepends -- 在输出结果里是否保留换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。

str1 = 'ab c\n\nde fg\rkl\r\n'
print(str1.splitlines(True))  # ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
print(str1.splitlines())  # ['ab c', '', 'de fg', 'kl']

str.replace(old,new,count)


Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数count,则替换不超过 count 次。

string_Data = 'This  is a test, test!!'
data = string_Data.replace("test", 'example')
print(data)  # This  is a example, example!!
data1 = string_Data.replace("test", 'example', 1)
print(data1)  # This  is a example, test!!

str.startswith(start,end)


检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

str = "this is string example!!!"
print(str.startswith('this'))  # True
print(str.startswith('is', 2, 4))  # True
print(str.startswith('this', 2, 4))  # False

str.swapcase()


对字符串的大小写字母进行转换。

string_Data = "test"
print(string_Data.swapcase())  # TEST
string_Data1 = "Test"
print(string_Data1.swapcase())  # tEST

str.zfill(width)


定长度的字符串,原字符串右对齐,前面填充0。

string_Data = "test"
print(string_Data.zfill(10))  # 000000test
print(string_Data.zfill(20))  # 0000000000000000test
posted @ 2019-08-04 20:34  yangchangjie  阅读(226)  评论(0编辑  收藏  举报