Python字符串String基础知识点总结

Python字符串String基础知识点总结

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time  : 2020/4/18 12:04
# @Author: xuhui
# @File  : String.py
from string import Template

print()
print("`````aaaaaaaaa`````")
print()

# !!!字符串与元组拥有相似的不可修改性————只能通过修改整体来改变其中某一个元素,且修改后的字符串/元组与之前并不相同
str1 = "abc"
print(id(str1))
str1 = "abcd"
print(id(str1))

print()
print("`````bbbbbbbbb`````")
print()

# !!!字符串的创建
#    方法一:一组单引号或双引号,当字符串中有单引号(/双引号)时,建议用双引号(/单引号)创建字符串
print("```(1)```")
str1 = "ab'c'd"
print(str1)
str2 = 'ab"c"d'
print(str2)
# 若字符串中既有单引号又有双引号,可使用转义字符(\)来实现我们想要的真实含义而不影响整个字符串
# str3 = "ab"c"d"
# -->File "E:/A-PythonProject/E-BP3-Test/String.py", line 14
# -->str3 = "ab"c"d"
# -->           ^
# -->SyntaxError: invalid syntax
str3 = "ab\"c\"d"
print(str3)
#    方法二:三组单引号或双引号,其与一组单引号或双引号的区别为:
#                           其可以直接按回车实现到下一行的输入,同时在后台显示时也是自动换行显示;
#                           而单组引号也可以直接按回车实现到下一行的输入,但在后台的显示却是在同一行显示;
#                           即三组引号在不同行之后默认保留换行信息;而单组引号没有,想要换行,需要自己加\n
print("```(2)```")
str4 = 'abcd"e"f' \
       '  jh  i' \
       'gk'
print(str4)
str5 = '''abcd"e"f
  jh  i
gk'''
print(str5)
str6 = 'abcd"e"f\n' \
       '  jh  i\n' \
       'gk'
print(str6)

print()
print("`````ccccccccc`````")
print()

# !!!字符串的合并(拼接)
#    方法一:str_x str_y,两字符串之间加空格,默认合并,str_y拼接到str_x后面
print("```(1)```")
str1 = "abc" "def"
print(str1)
#    方法二:str_x+str_y,两字符串通过加法合并,str_y拼接到str_x后面
print("```(2)```")
str2 = "abc"+"def"
print(str2)

print()
print("`````ddddddddd`````")
print()

# !!!字符串的格式化
#    方法一:%操作符实现字符串格式化,他可以很轻易地实现基于位置的格式化字符串;
#           "I'm %s" % name,(name为一个字符串,设name="jack"),则该语句输出为I'm jack
#           %s在此处可看为一个占位符,s为格式说明符,后面的% name对应应该填充进入的值
#    %c-->格式化字符或ASCII码
#    %s-->格式化字符串
#    %d-->格式化整数
#    %u-->格式化无符号整数
#    %o-->格式化无符号八进制数
#    %x-->格式化无符号十六进制数
#    %f-->格式化浮点数字,可指明小数点后的精度
#    %e-->用科学计数法格式化浮点数
#    %p-->用十六进制数格式化变量的地址
print("```(1)```")
name = "jack"
print("I'm %s" % name)
#    若有多个位置需要进行占位填充格式化
#       可采用:1.占位时设计的顺序是什么,填充时就按什么顺序填充,不能改变,不然会乱套
name = "jack"
sex = '男'
age = 22
print("I'm %s, sex is %s, age is %d" % (sex, name, age))
print("I'm %s, sex is %s, age is %d" % (name, sex, age))
#             2.采用变量名映射,相当于进行字典查询,占位符通过变量名与要格式化填充的数据一一对应
#       !注意:若采用方法一进行格式化字符串,建议采取变量名映射方式(不过需要写较多代码)
print("I'm %(name)s, sex is %(sex)s, age is %(age)d" % {"age": age, "name": name, "sex": sex})
#    方法二:Python3引入了一个新的字符串格式化的方法,并且支持Python2.7————str.format()
#          通过添加 :x(x代表十六进制)后缀传入格式说明符(但int格式化为十六进制是并没有前缀,需要自己添加)
print("```(2)```")
#       1.按顺序占位填充
print("I'm {0}, sex is {1}, age is {2}".format(age, name, sex))
print("I'm {0}, sex is {1}, age is {2}".format(name, sex, age))
#       2.按变量名映射填充(建议此方式)
print("I'm {name}, sex is {sex}, age is 0x{age:x}".format(age=age, name=name, sex=sex))
#    方法三:在Python 3.6中添加了一个新的字符串格式化方法————字面量格式化字符串或者“f-strings”
#          它在字符串前面放置了“f”作为前缀,因此被称为“f-strings”
#          这个新的方法让我们能够在字符串常量中嵌入Python表达式(数字之间的加法、乘法等)
#          通过添加 :#x(x代表十六进制)后缀传入格式说明符
print("```(3)```")
str1 = f"I'm {name}, sex is {sex}, age is {(age + 1):#x}"
# str1在 f 的作用下实际被转换为————"I'm " + name + ", sex is " + sex + ", age is " + hex(age + 1)
print(str1)
str2 = f"I'm {3 * (8 + 9)}, sex is {sex}, age is {age + 1}"
# str2在 f 的作用下实际被转换为————"I'm " + (3 * (8 + 9)) + ", sex is " + sex + ", age is " + (age + 1)
print(str2)
#    方法四:字符串模板,当我们的程序需要处理由用户提供的输入内容时,字符串模板是最保险的选择,因为其可以降低复杂性;
#          字符串模板关闭了  通过从恶意的格式化字符串访问__globals__字典并获取我们安全密匙等信息  的方法;
#          字符串模板不支持使用格式说明符(x,s,c,e等),需要通过hex()、bin()、int()等函数自己手动转换格式;
#          通过from string import Template引入字符串模板(即从Python的内建string模块中导入Template类);
#          通过$符号与变量名映射进行占位;
#          使用方式:Template("a b c d $x, e fg h $y").substitute(x=hex(int_x), y=str_y);
print("```(4)```")
print(Template("I'm $name, sex is $sex, age is $age").substitute(name=name, sex=sex, age=hex(age)))

print()
print("`````eeeeeeeee`````")
print()

# !!!字符串的切片处理,与列表和元组类似,正向标号为0,1,2......,反向标号为-1,-2,-3......
# str_x[index: end],取str_x从index到end中间所有!字符 (index取,end不取,左闭右开规则)
print("I'm jack, sex is '男', age is 22"[0:5])
str1 = "I'm jack, sex is '男', age is 22"
# str_x.index('c'),返回str_x里面第一个匹配c的字符的下标
print(str1[5:str1.index('i')] + "123")

print()
print("`````fffffffff`````")
print()

# !!!字符串中常用的一些方法
# 1.str_x.split(str_y/c),以str_y/c为依据将str_x切割成列表,并将str_x中的str_y/c切掉
#   !若几个str_y/c连续,他们的中间会默认为空字符串,并将其作为之后列表的元素
print("```(1)```")
print("aaccaacc cca".split("cc"))
print("aaccaacca".split('c'))
# 2.str_x.partition(str/c),以第一个str_y/c为依据将str_x分割成三部分,并以列表存储
print("```(2)```")
print("aaccaacc cca".partition("cc"))
print("aaccaacca".partition('c'))
# 3.len.(str_x)计算字符串str.x的长度
print("```(3)```")
print(len("abc abc"))
# 4.str_x.strip('c')去掉str_x两端的字符c,直到删到两端第一个不是c的位置(若两端第一个位置就不是c,那就不删了)
#   str_x.lstrip('c'),(left)只删左边
#   str_x.rstrip('c'),(left)只删右边
# !括号中不填东西默认为空格
print("```(4)```")
print("i" + "    ccabcabcc    c".strip('c') + "i")
print("i" + "     abc abc     ".lstrip() + "i")
print("i" + "     abc abc     ".rstrip() + "i")
# 5.str_y(/c) in(/not in) str_x,判断str_y(/c)在不在str_x里面
print("```(5)```")
print("ab" in "abc")
print('a' not in "abc")
# 6.str_x.lower(),将str_x中的字符全部转换成小写
print("```(6)```")
print("Hello World".lower())
#   str_x.upper(),将str_x中的字符全部转换成大写
print("Hello World".upper())
#   str_x.swapcase(),将str_x中的字符的大小写互换,大写变小写,小写变大写
print("Hello World".swapcase())
#   str_x.capitalize(),将str_x中的首字符大写,其余字符全变为小写
print("hello World".capitalize())
# 7.str_x.count(str_y/c),返回str_y/c在str_x中的个数
print("```(7)```")
print("aabbccddefaadefaa".count("aa"))
print("aabbccddefaadefaabb".count("b"))
# 8.str_x.center(length, 'c'),修改str_x为指定长度length,并将str_x原来的内容居中,原来内容两端填入指定字符c
print("```(8)```")
str1 = "Hello World".center(30, '`')
print(len(str1))
print(str1)
# 9.str_x.replace(str_y/c,str_z/c'),将str_x中的str_y/c替换成str_z/c'
print("```(9)```")
print("Hello World".replace('l', "bb"))
print("Hello Worllld".replace("ll", 'b'))
# 10.str_x.zfill(length),将str_x右对齐
#    若len(str_x)<length,差多少位补多少个0,str_x相当于重新赋值为"00"(如果差两位)+ 原str_x
#                                      若len(str_x)>=length,保持str_x不变
print("```(10)```")
str2 = "hello"
print(id(str2))
str2 = "hello".zfill(3)
print(id(str2))
print(len(str2))
print(str2)
print("`````")
str2 = "hello"
print(id(str2))
str2 = "hello".zfill(7)
print(id(str2))
print(len(str2))
print(str2)

发布了7 篇原创文章 · 获赞 4 · 访问量 172

猜你喜欢

转载自blog.csdn.net/weimofanchen/article/details/105647903