Python __ 字符串

基础知识

  1. 字符串是 Python 中最常用的数据类型。

  2. Python 不支持单字符类型。
    单字符即长度为1的字符串

  3. 字符串类型是不可变类型。
    对字符串的操作方法都不会改变原来字符串的值;字符串相加之后会开辟新的空间,即形成新的字符串。

  4. python字符串是一个定长的字符数组,通过下标控制长度,没有结束标识

  5. 既可以用单引号或者双引号,也可以用三引号创建字符串。
    在三引号字符串中可以包含换行回车等特殊字符

输出

在字符串前加字母r或R,表示原始字符串,其中的所有字符都表示原始的含义,而不会进行任何转义。
比如说:

print("smith\\exam1\\test.txt")
print("smith\exam1\\test.txt")
print("smith\exam1\test.txt")
print(r"smith\exam1\test.txt")
# 结果
#smith\exam1\test.txt
#smith\exam1\test.txt
#smith\exam1	est.txt
#smith\exam1\test.txt

匹配find

假设s和t都是字符串变量,并且t不是s的子串,那么表达式s.find(t)的值是-1
假设s和t都是字符串变量,并且t不是s的子串,那么表达式s.index(t)的值是报异常

拼接

image

去除替换

内置函数

去除空格:

str=input().strip()

正则表达式

python官方文档

过滤:findall

作用:

  • 在字符串中找到正则表达式所匹配的所有子串,
  • 返回一个列表,列表包含所有于给定模式匹配的子串
    如果有多个匹配模式,则返回元组列表,
    如果没有找到匹配的,则返回空列表。

语法格式:
findall(pattern,string)
pattern: 模式串
string : 待匹配的字符串。

替换:sub

sub(pat,repl,string)
pat: 模式串
repl: 将要替换成的串
string : 待匹配的字符串

作用:
string中的所有与模式pat匹配的子串都替换为repl里面的字符串

样例:
将str中的k都删除掉

str=input().strip()
k=input().strip()
str=re.sub(k,"",str)

常用正则表达式

[]
用于表示一个字符集合。在一个集合中:

字符可以单独列出,比如 [amk] 匹配 'a', 'm', 或者 'k'。

可以表示字符范围,通过用 '-' 将两个字符连起来。比如 [a-z] 将匹配任何小写ASCII字符, [0-5][0-9] 将匹配从 00 到 59 的两位数字, [0-9A-Fa-f] 将匹配任何十六进制数位。 如果 - 进行了转义 (比如 [a-z])或者它的位置在首位或者末尾(如 [-a] 或 [a-]),它就只表示普通字符 '-'。

特殊字符在集合中,失去它的特殊含义。比如 [(+)] 只会匹配这几个文法字符 '(', '+', '', or ')'。

字符类如 \w 或者 \S (如下定义) 在集合内可以接受,它们可以匹配的字符由 ASCII 或者 LOCALE 模式决定。

不在集合范围内的字符可以通过 取反 来进行匹配。如果集合首字符是 '^' ,所有 不 在集合内的字符将会被匹配,比如 [^5] 将匹配所有字符,除了 '5', [^^] 将匹配所有字符,除了 '^'. ^ 如果不在集合首位,就没有特殊含义。

在集合内要匹配一个字符 ']',有两种方法,要么就在它之前加上反斜杠,要么就把它放到集合首位。比如, [()[]{}] 和 [{}] 都可以匹配括号。

[0-9a-fA-F]

判断

判断大小写

isupper() 判断是否都为大写
islower() 判断是否都为小写
istitle() 判断所有的单词首字符都是大写

判断数据类型

isspace() 判断所有的字符都是空格
isalnum() 判断所有的字符都是数字或字母
isalpha() 判断所有的字符都是字母
isdigit() 判断是不是数字

转化

大小写转化

将字符串首字母变为大写:capitalize()
将字符串每个单词首字母变为大写:title()

转化成二进制

  1. 使用format
a = input()
atemp = int(format(a, "b"))
#转化为用0补位的31位二进制数,然后再转化为list
cnt2=list(format(b,"031b"))
  1. 使用bin函数
ntemp=bin(n)

编码和解码

decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。
encode() 方法以 encoding 指定的编码格式编码字符串;得到bytes字节串。

  • str.decode(encoding='UTF-8',errors='strict')
  • str.encode(encoding='UTF-8',errors='strict')
    encoding -- 要使用的编码,如"UTF-8"。
    errors -- 设置不同错误的处理方案。
str = "你好Hello"
str = str.encode('utf-8','strict')
 
print ("Encoded String: " , str)
print ("Decoded String: " , str.decode('utf-8','strict'))
# 结果
#Encoded String:  b'\xe4\xbd\xa0\xe5\xa5\xbdHello'
#Decoded String:  你好Hello

ASCII码和字符的转化

转为字符chr(a)
转为ASCII码ord(c))
样例:

num=[eval(x) for x in input().split()]
num.sort()
for i in num[:-1]:
    print(chr(i),end="<")
print(chr(num[-1]) )

将字符串序列转换成字符串

使用'separator'.join()方法
Separator:生成的字符串之间的分隔符,需要注意的是最后一个字符串没有该分隔符

>>>num= input().split()
>>>print("".join(num))
>>>print("".join(num))
qwer
q,w,e,r

附两个题目:
错误: 已知x为非空字符串,那么表达式 ''.join(x.split()) == x 的值一定为True。
正确: 已知x为非空字符串,那么表达式 ','.join(x.split(',')) == x 的值一定为True。
原因:split有两个参数,分隔符和分隔数量限制,默认下分隔符数量是无限大;而传入了分隔符,分隔符数量限制就是1
所以当字符串x中有连续的多个空格时,第一条语句就错了。

x="sdf      fsd"#中间六个空格
print(len(x.split()))      #结果:2
print(len(x.split(" ")))   #结果:7
print(len(x.split(" ",1))) #结果:2
print(len(x.split(" ",2))) #结果:3
print(len(x.split(" ",10)))#结果:7
posted @ 2022-06-08 20:58  kingwzun  阅读(649)  评论(0编辑  收藏  举报