python字符串操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字符串操作相关的知识,希望对你有一定的参考价值。

概述

  所有的标准序列操作(索引、分片、乘法、判断成员资格、求长度、取最大值和最小值)对字符串同样适用。

  特性:不可修改

字符串格式化

  字符串格式化使用字符串操作符即百分号%来实现;在%左侧放置一个字符串(格式化字符串),而最右侧则放置被格式化的值。可以使用一个值,如一个字符串或者数字,也可以是多个值的元组或者字典(如果希望格式化多个值的话);

  格式化字符串的%s部分称为转换说明符,它们标记了需要插入转换位置;

  如果在格式化字符串里面包括百分号,那必须使用%%,这样Python就不会将百分号误认为是转换说明符;

>>> print("Hello, %s. %s enough for ya?" %(world, Hot))
Hello, world. Hot enough for ya?

1.格式化操作符的右操作数可以是任意类型,如果是元组或者映射类型(如字典),那么字符串格式化将有所不同;
2.如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符;

基本转换说明符:

  • %字符:标记转换说明符的开始;
  • 转换标志(可选):- 表示左对齐;+ 表示在转换值之前要加上正否号;” “(空白字符)表示正数之前保留空格;0 表示转换值若位数不够则用0填充;
  • 最小字字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是 *,则宽度会从元组中读出;
  • 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出;
  • 转换类型:
字符串格式化转换类型
转换类型 含义
d, i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x(小写) 不带符号的十六进制
X(大字) 不带符号的十六进制
e(小写) 科学计数法表示的浮点数
E(大写) 科学计数法表示的浮点数
f, F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其他情况与f相同
G 如果指数大于-4或者小于精度值则和E相同,其他情况则与F相同
C(大写) 单字符(接受整数或者单字符字符串)
r 字符串(使用repr转换任意Python对象)
s 字符串(使用str转换任意Python对象)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 简单转换

 简单转换只需写转换类型

 1 >>> Price os eggs: $%d %42
 2 Price os eggs: $42
 3 >>> Price os eggs: $%x %42
 4 Price os eggs: $2a
 5 >>> Pi: %f % pi
 6 Pi: 3.141593
 7 >>> Very inexact estimate os pi: %i % pi
 8 Very inexact estimate os pi: 3
 9 >>> Using str: %s % 42L
10 Using str: 42
11 >>> Using str: %r % 42L
12 Using str: 42L
  • 字段的宽度和精度

  转换说明符可以包括字段宽度和精度。字段宽度是转换后的值所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。
    这两个参数都是整数(首先是字段宽度,让后是精度),通过点号(.)分隔。虽然两个都是两个可选的参数,但如果只给出精度,就必须包含点号。

1 >>> %10f % pi    #字段宽 10
2   3.141593
3 >>> %10.2f % pi    #字段宽 10,精度 2
4       3.14
5 >>> %.2f % pi    #精度 2
6 3.14
7 >>> %.5s % hello,world
8 hello 

   可以使用*(星号)作为字段宽度或者精度(或者两者都使用*),此时数值会从元组参数中读出

1 >>> print(%.*s % (5, hello world))
2 hello
  • 符号、对齐和用0填充

  在字段宽度和精度值之前还可以放置一个“标记”,该标记可以是零、加号、减号或空格。

零表示数字将会用0进行填充

1 >>> print(%010.2f % pi)
2 0000003.14

  在010中开头的那个0并不意味着字段宽度说明符为八进制,它是个普通的Python数值当使用010作为字段宽度说明符的时候,表示字段宽度为10,并且用0进行填充空位,而不是说字段宽度为8;

减号(-)用来左对齐数值

1 >>> print(%-10.2f % pi)
2 3.14

空白(” “)意味着在正数前加上空格(这在对齐正负数时会很有用)

1 >>> print(% 5d % 10 + \n + % 5d % -10)
2    10
3   -10

加号(+),他表示不管是正数还是负数都标记出符号(同样是在对齐时使用)

1 >>> print(%+5d % 10 + \n + %+5d % -10)
2   +10
3   -10

 python2.7之后支持使用format()方法对字符串进行格式化

1 >>> print("Hello, {}. {} enough for ya?".format(world,Hot))
2 Hello, world. Hot enough for ya?

字符串方法

name = "my name is {name},i am is {ago}"

print(name.capitalize())    #返回首写字母大写的字符串副本
print(name.count(m)) #返回指定字符串在整个字符串中出现的次数
print(name.center(50,+)) #根据长度对字符串两端填充
print(name.endswith(mzc)) #判断字符串的结尾,可以用作判断邮箱地址
print(name.expandtabs(tabsize = 30)) #字符串中添加一个tab符,此方法用来指定tab符要空多少个字符
print(name.find(name))  #查找指定字符第一次出现的位置,并返回指定字符的索引
print(alex lil.rfind(l)) #查找指定字符最后一次出现的位置,并返回指定字符的索引
print(name.format(name=mzc))  #格式化字符串
print(name.format_map({name:mzc, ago:18})) #和format方法一样
print(abc123.isalnum())   #判断是否为阿拉伯数字或字符
print(abcA.isalpha()) #判断字符串是否为纯英文字母
print(8998.isdecimal()) #判断字符串是否为十进制
print(My Name Is Mzc.istitle()) #判断字符串各个单词首写字母是否为大写
print(na me.isidentifier()) #判断字符串是否为合法标识符
print(123.isdigit()) #判断一个字符串是否一个整数
print(My Name Is  .isprintable()) #tty file ,drive file
print(My Name Is  .isupper()) #判断字符串是否为大写
print(My Name Is  .islower()) #判断字符串是否为小写
print(+.join( [1,2,3]) )    #使用单个元素将多个元素连接成字符串
print( name.ljust(50,*)  ) #右填充
print( name.rjust(50,-)  ) #左填充
print( \nmzc.lstrip()  )   #去除左边空过或者换行
print( mzc\n.rstrip()  )   #去除右边空过或者换行
print(     mzc\n.strip() )   #去除左右两边空过或者换行
print( Mzc.lower()  ) #将字母转换成小写
print( Mzc.upper()  ) #将字母转换成大写
print("m z c".title())  #将各单词的首写字母转换成大写
--------------------------------------------------------------------------------------------------------------------
#字符串替换
>>> p = str.maketrans("abcdefli",[email protected])    #生成一个匹配关系,两个参数中元素个数要相同
>>> print("lilianjie".translate(p) )
[email protected]
print(alen li.replace(l,L,2)) #字符替换,可以指定替换的个数

print(1+2+3+4.split(+)) #根据指定字符分割字符串
print(a\nb\nc\nd\ne.splitlines()) #根据换行符或空格分割字符串
print(Spdir.swapcase()) #反转字符串字母的大小写
print(lex li.zfill(50)) #对字符串进行向左以数字0进行填充

 

以上是关于python字符串操作的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

Python代码阅读(第25篇):将多行字符串拆分成列表

jQuery的DOM操作

《Python学习之路 -- Python基础之切片》

android小知识点代码片段

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段