Python:字符串 解码与编码

参考:Python 字符串 | 菜鸟教程

解码编码:a bytes-like object is required,not 'str'

 1、字符串运算符

运算符 描述 例子
+ 字符串连接  
* 重复输出字符串
'Hello'*3
'HelloHelloHello'
in 如果字符串中包含给定字符就返回True
'o' in 'Hello'
True
'lo' in 'Hello'
True
't' not in 'Hello'
True
not in 与in相反
r/R前缀 标识该字符串中不存在转义字符,所有字符都直接按照字面意思使用
r'D:\Python'
#等价于
'D:\\Python'
% 格式化字符串 Python:格式化字符串的几种方式 - ShineLe - 博客园

2、三引号——跨行字符串

如果字符串太长需要跨行输入而又不想多写语句时,可以用三引号'''

hi='''ni
hao'''

hi
'ni\nhao'

这种写法的一个典型用例是,当需要一块HTML或者SQL时,应当使用三引号标记,因为使用传统的转义字符体系将会十分复杂

复制代码
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')
复制代码

3、Unicode字符串

定义方法:加u前缀

 

4、函数及用法

①类型检测

if not isinstance(S,str) :#str即为字符串类型

  raise TypeError('Error input type')

②函数

方法 说明 返回值
string.capitalize() 字符串首字母大写 新字符串
string.ljust(width) 将原字符串左对齐,并在右侧用空格填充至长度width 新字符串
string.zfill(width) 将原字符串右对齐,并在左侧用0填充至长度width 新字符串
string.center(width) 将字符串居中,并使用空格左右填充至指定的width宽度 新字符串
string.count(str , beg=0 , end=len(string)) 统计str在string中出现的次数,指定beg和end将会在指定范围内统计 str出现的次数
string.decode( encoding='utf-8' , error='strict') 以encoding指定的编码格式解码string,如果出错则报ValueError异常,除非errors为'ignore'或'replace' 解码后的字符串
string.encode(encoding='utf-8',errors='strict') 编码,其他与decode相同 编码后的字符串
string.endswith(obj , beg=0, end=len(string)) 检查字符串是否以obj结束,设定beg与end将会指定在特定范围内检查(文档筛选时很有用)

是:TRUE

否:False

string.startswith(obj , beg=0 , end=len(string)) 检查字符串是否以obj开头,设定beg与end将会指定在特定范围内检查(文档筛选时很有用)

是:TRUE

否:False

string.expandtabs(tabsize=8) 将字符串string中的tab符号转化为空格,参数tabsize指定每个tab转化的空格数,默认是每个tab转化8个空格 新字符串
string.find(str , beg=0 , end=len(string))        检测str是否包含在string中,beg与end指定检查范围。与in运算符的区别在于返回值

返回第一次出现时索引值;否则返回-1

string.rfind(str , beg=0 , end=len(string)) 类似于find(),区别在于从右开始  同上
str.index(str , beg=0 , end=len(string)) 同find(),区别在于如果不存在str会报一个异常  同上,失败返回异常
str.rindex(str , beg=0 , end=len(string)) 类似index(),区别在于从右开始  同上,失败返回异常
string.isalnum() 如果string的所有字符都是字母或者数字就返回True,否则False

True与False         

string.isalpha() 如果string的所有字符都是字母则返回True,否则False
string.isdecimal() 如果string只包含十进制数字就返回True,否则False(字符串转数字时的检查工作)
string.isdigit() 如果string只包含数字就返回True,否则False
string.islower() 如果string中的字符都是小写(只看能区分大小写的字符),返回True,否则False(大小写检查)
string.isupper() 与上边相反
string.isnumeric() 如果string只包含数字字符,返回True,否则False
string.isspace() 如果string中只包含空格,返回True,否则False
string.istitle() 如果string是标题化的(见title()),返回True,否则返回False
string.join(seq) 以string为连接符,将seq中的所有元素合并为一个新的字符串(如果string为'',则能起到无缝连接)  新字符串
string.lower() 将string中的所有字符小写化  新字符串
string.upper() 所有字符大写化  新字符串
string.lstrip() 去掉string左边的空格  新字符串
string.rstrip() 去掉string右边的空格  新字符串
string.strip( [chars] ) 同时执行lstrip()与rstrip()(读文件时用readlines读进来的数据会包含换行符'\n',需要用strip()消去)  新字符串
max(str) 返回str中的最大字母 字符
min(str) 返回最小字母 字符 
string.partition(str) 找到str出现的第一个位置,将string分为一个三元素元组(pre,str,post),如果string中不包含str,则pre==string,str和post都为空(用法不如split普遍)

成功:三元素元组(pre,str,post);

失败:(string , '' , '' )

string.rpartition(str) 类似partition(),区别在于从右开始  同上
string.replace(str1 , str2 , num=string.count(str1)) 把string中的str1替换为str2,次数不超过num次  新字符串
string.split(str='' , maxsplit=string.count(str)) 以str(默认为空格)为分隔符对string进行切割,如果num指定,则仅分隔num个字符串 切割后各段子串构成的list,其中不包含分隔符str
string.splitlines( [keepends] ) 按照行('\r' , '\r\n' , '\n')分隔,返回一个包含各行作为元素的List;如果keepends为False,则不包含换行符;如果为True,则包含。这里的包含是指,结果中是否包含换行符  各行作为元素的list
string.swapcase() 翻转string中的大小写  新字符串
string.title() 将string进行“标题化”,标题化:所有单词都以大写开始,其余字母都为小写  新字符串
string.translate(str) 根据str给出的表转换string中的字符  转换后的字符串

③部分函数的具体用法

a、指定连接字符的连接——join

List序列中的元素以指定的字符连接成一个新的字符串。

str.join(Seq)

str:连接字符

Sequence:字符串序列,注意是序列,需要用[],()

str='-'
Seq=['a','b','c']
print(str.join(Seq))

a-b-c

当str为空字符串''时,作用就是把字符串序列中的元素直接连接起来

str=''
Seq=['a','b','c']
print(str.join(Seq))

abc

 

字符串拼接——+

b'123'+b'='
b'123='

'123'+'456'
'123456'

 

b、字符串分割——split

将字符串中的元素以指定的字符为标识为界分割成几段字符串,并保存在一个字符串序列中

str.split(str="", maxsplit=string.count(str)).

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

maxsplot-- 分割次数。默认为 -1, 即分隔所有。

 

str2='123.456'
S=str2.split('.')
print(S)

['123', '456']

 

c、查找指定字符——find

返回下标,失败返回-1

判断字符串str中是否有子串substr的两种方法:

#1
if substr in str:
    print(True)

#2 
if str.find(substr) !=-1
    print(True)

 利用正则,查找字符串中第一个中文字符的起始位置(此时不用find):

学习自:python 找到字符串第一个中文字符的位置_mob649e816704bc的技术博客_51CTO博客

import re
pattern=re.compile(r'[^\u0000-\u007f]')
match=pattern.serch(fn)

 

 

d、移除首尾字符——strip

移除字符串首尾指定的字符或字符序列,中间的字符无法移除

用法:str.strip( [chars] )

chars为指定要移除的字符序列缺省时为空格换行符'/n'

这里用字符序列不是字符串的原因,只要包含在字符序列中的字符都会被删除,而不要顺序正确,见第三个例子

复制代码
'00001230456000'.strip('0')
'1230456'

'   He ll o  '.strip()
'He ll o'

#字符序列而非字符串
'1234321'.strip('12')
'343'
复制代码

 

e、替换——replace()

用法:str.replace(old , new [, max ] )

用途:把字符串中的old子串替换为new子串,如果指定第三个参数max,则替换不超过max次

返回:替换后的新串

str='This is string example... wow!!!this is really string'
print(str.replace('is','was'))
print(str.replace('is','was',3))

Thwas was string example... wow!!!thwas was really string
Thwas was string example... wow!!!thwas is really string

 

f、用转换表转化字符串——translate()

用法:str.translate(table)

用途:根据table给出的表转换字符串str的字符;

参数:

table:翻译表,由maketrans方法转换而来

返回:转换后的新字符串

intab = 'aeiou'
outtab = '12345'
trantab = str.maketrans(intab , outtab) #这三句之后,转换表trantab就有了转化方式——a转1,e转2,...

str = 'this is an example ...'
print( str.translate(trantab))

注意:

不能from string import maketrans,否则会报错,原因未知。

可以直接用str.maketrans(),str是个类名

posted @   ShineLe  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示