Python基本数据类型之字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WandDouDou/article/details/82700164

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)
字符串变色:\033[色值(数字类型);1m要变色的字符串内容\033[0m
# </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))  # 格式化字符串和整数
print("截取字符串 %.4s" % 'dfgetgw')  # 格式化截取字符串前四位
print("percent %.2f" % 99.874353423423)  # 格式化浮点数并只保留小数点后两位
print("percent %.2f %%" % 65.5686)  # 格式化输出百分比
print("i am %(name)s , age %(age)d " % {"name":"wangdoudou", "age":25}) # 键值对形式赋值
print("\033[45;1m%(name)+60s\033[0m my hobby" % {"name":"wangdoudou"})  # 打印带颜色的字符串
print("1", "2", "3", "4", sep=":")  # 字符串使用分隔符拼接,关键字 sep
# </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))
print("I am {} , age {}".format("wangdoudou", 24))
print("I am {1} , age {0}".format("wangdoudou", 24))
print("I am {0} , age {1}, hobby {2}".format(*["wangdoudou", 18, "basketball"]))  # 传列表前面要加个*号
print("I am {name} , age {age}, hobby {hobby}".format(name="wangdoudou", age=25, hobby="basketball"))
print("I am {name} , age {age}, hobby {hobby}".format(
    **{"name": "wangdoudou", "age": 25, "hobby": "basketball"}))  # 传字典前面要加两个**号
print("I am {0[0]} , age {0[1]}, hobby {0[2]}".format([1, 2, 3], [4, 5, 6]))
print("I am {:s} , age {:d}, hobby {:f}".format("wangdoudou", 25, 89.763))
print("I am {:s} , age {:d}, hobby {:f}".format(*["wangdoudou", 25, 89.763]))
print("I am {name:s} , age {age:d}, hobby {hobby:f}".format(**{"name": "wangdoudou", "age": 25, "hobby": 89.763}))
print("numbers : {:b}, {:o}, {:d}, {:x}, {:X}, {:%}, {}".format(15, 15, 15, 15, 15, 15.3455, 2))

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 岁!
                                                  wangdoudou my hobby
要变色的字符串内容
1:2:3:4

---字符串三引号练习---
使用三引号的输出:
 这是一个多行字符串的实例
多行字符串可以使用制表符
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
I am wangdoudou , age 24
I am 24 , age wangdoudou
I am wangdoudou , age 18, hobby basketball
I am wangdoudou , age 25, hobby basketball
I am wangdoudou , age 25, hobby basketball
I am 1 , age 2, hobby 3
I am wangdoudou , age 25, hobby 89.763000
I am wangdoudou , age 25, hobby 89.763000
I am wangdoudou , age 25, hobby 89.763000
numbers : 1111, 17, 15, f, F, 1534.550000%, 2
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):作用是去除字符串两边的空格、换行符、制表符,但是不包含中间的空格: 我就 呵呵 打死你
 

猜你喜欢

转载自blog.csdn.net/WandDouDou/article/details/82700164