Python字符串类型
1. 字符串的定义
python
str1 = 'abc'
str2 = "abc"
str3 = """
abc
多行定义
"""
2. 字符串的运算
python
#字符串的运算 加法运算 拼接
print("abc"+"cde")
#乘法运算
print("abc"*3)
# 大小比较 根据编码进行比较
print("abc" > "xyz")
编码标准
ASCII编码是由美国制定的,包含一些字母、符号、阿拉伯数字等
unicode 编码是万国码 包含了中文 韩文 日文等等
UTF-8 是unicode编码的实现方式(中文占三个字节)
GBK 是中国定义的编码实现方式(中文占两个字节)
print( ord("中")) # --》 字符到unicode的转换
print( bin(20013) ) # --》整数到二进制的转换
print("中".encode('utf-8')) # 保存为utf-8 形式
print("中".encode('gbk')) # 保存为gbk 形式
print(b'\xe4\xb8\xad'.decode('utf-8')) # 二进制转字符串
#20013
#0b100111000101101
#b'\xe4\xb8\xad'
#b'\xd6\xd0'
转义字符
\+特殊字符表示特殊含义,成为转移字符,如:
python
\n 换行
\t 占位符
\a 报警
\\ 单单表示\
\" 单单代表"
字符串的格式化
python
name = input("请输入用户名\n")
age = input("请输入用户的年龄\n")
#方法一:百分号格式化
print("name is %s,age is %s"%(name,age))
#方法二:format格式化
print("name is {},age is {}".format(name,age))
print("name is {1},age is {0}".format(age,name))
print("name is {name},age is {age}".format(name = name,age = age))
#方法三:f标志位格式化(最常用)
print(f"name is {name},age is {age}")
字符串的截取
python
str1 = "abcd1234"
# 正向 0 1 2 3 4 5 6 7
# 逆向 -8 -7 -6 -5 -4 -3 -2 -1
print(str1[0:2:1]) #ab
print(str1[0:2:]) #ab
print(str1[2:]) #cd1234
print(str1[-1:-9:-1]) #4321dcba
print(str1[-2:2:-1]) #321d
print(str1[::-1]) #4321dcba
#str[start : end :step] start 和 end 的值默认指向 开头和结尾 step 默认是1 都可以省略
# 先确定step 为正还是为复 step 为正 从前往后截取 step 为负 从后往前截取
# 再确认start end 的位置 start在 end的前面
# 确认step 的值
字符串的遍历
python
# 遍历
for i in "abcxyz":
print(i)
3. 字符串的方法
Python里面一切皆对象 ,查看String的内置方法
python
str1 = "abcd"
print( dir( str1 ))
它包含的内置方法有:
python
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
判断类型
| 方法 | 功能 |
|---|---|
| isalpha() | 判断是否全为字母 |
| isdigit() | 判断是否全为数字 |
| isalnum() | 判断是否为数字或字母 |
| isnumeric() | 判断是否为数字(包括汉语) |
| isidentifier | 判断是否符合标识符 |
| istitle | 判断是否符合标题规则 |
| startswith("abc") | 判断是否以"abc"开头 |
| endswith("abc") | 判断是否以"abc"结尾 |
| isupper() | 判断是否为大写 |
| islower() | 判断是否为小写 |
python
str1 = "123456"
str2 = "中文"
#判断类型
print( str2.isalpha() ) #判断是否全为字母
print( str1.isdigit() ) #判断是否全为数字
print( str1.isalnum() ) #判断是否为数字字母
print( str1.isidentifier() ) #是否符合标识符
print( str1.isnumeric() ) # 一、二、三 也包含进去了
print( "Hello The World".istitle() ) #判断是否为标题字符 单词首字母大写,其他字母小写 重点
print( str1.startswith("a") ) #判断是不是以什么什么开始
print( str1.endswith("a") ) # 判断是不是以什么什么结束
统计类型
| 方法 | 功能 |
|---|---|
| count("abc") | 统计abc出现的次数 |
| len(str1) | 统计字符串str1的次数 |
| index("abc") | 统计字符串"abc"第一次出现的索引下标 |
| find("abc") | 统计字符串"abc"第一次出现的索引下标 |
find和index的区别:find如果没有找到返回值是-1 ,index如果没有找到会抛出异常
python
#统计字符串的长度
str1 = "abcd"
print( len(str1) )
#统计字串出现的此处
print(str1.count("a"))
#统计第一次出现的下标的位置
print(str1.index("c"))
#统计第一次出现的下标位置
print( str1.find("c"))
#find和index的区别 index如果没找到就会抛出异常 find如果没有找到就会返回-1 不会终止程序
转换类型
| 方法 | 功能 |
|---|---|
| upper() | 转换为大写 |
| lower() | 转换为消息 |
| swapcase() | 大小写互换 |
| strip() | 去除首末的空格 |
| lstrip() | 去除左边的空格 |
| rstrip() | 去除右边的空格 |
| title() | 转换成标题格式 |
| "#".join(['a','c','d']) | 将字符串用#拼接起来 |
| replace("$","%") | 将字符串中的$替换成% |
python
str1 = "HUAUN"
print(f"转换为大写{str1.upper()}")
print(f"转换为小写{str1.lower()}")
print(f"大小写互换{str1.swapcase()}")
print(f"去除首尾字符{"#abc#".strip("#")}") #默认去除首尾空白 lstrip 去除左边
#大小写转换一般出现在大小写不敏感
print(f"hello world".title())
print(f"{str1.split()}") #字符串写个,默认是以空白进行切割 切割得到的是列表
#字符串的连接
print(f"{'#'.join(['a','b','c'])}")
#字符串的替换
print("abc%xyz%".replace('%','$',1))
填充属性
| 方法 | 功能 |
|---|---|
| center(100,"*") | 用*填充满100个字符 |
| ljust(100,"*") | 左填充 |
| rjust(100,"*") | 右填充 |
python
str3 = "welcome HUAUN"
print(str3.center(100,'*'))
print(str3.rjust(100,'*'))
print(str3.ljust(100,'*'))
print(str3.zfill(100))
4. 小练习:
从键盘接收任意字符串输入 然后按顺序拿取出里面的大写小写和数字再判断拿取出的字符是否为回文
python
str1 = input("请输入一串字符串")
small = ""
big = ""
num = ""
for i in str1:
if i >= 'a' and i <= 'z':
small=small+i
if i >= 'A' and i <= 'Z':
big=big+i
if i >= '0' and i <= '9':
num=num+i
if samll[::] == small[::-1]:
print(small[::1],"是回文")
if big[::] == big[::-1]:
print(big[::1],"是回文")
if num[::] == num[::-1]:
print(num[::1],"是回文")
用字符串的方法判断输入的数是整型、浮点型还是其他
python
str1 = input("请输入\n")
str2 = str1
if str1.startswith("+") or str1.startswith("-"):
str2 = str1 [1:]
intflag = 0
if str2.isdigit():
intflag = 1
print(f"{str1}是整数")
a = str2.split(".")
charflag = 0
if len(a) == 2:
for i in a:
if not i.isdigit():
charflag = 1
break
if charflag:
print(f"{str1}是其他")
else:
print(f"{str1}是浮点数")
else:
if intflag ==0:
print(f"{str1}是其他")