Python中的序列——字符串

字符串是零个或多个的字符所组成的序列,字符串是Python内建的6种序列之一,在Python中字符串是不可变的。

1. 格式化字符串

字符串格式化使用字符串格式化操作符即百分号%来实现。在%左侧放置一个字符串(格式化字符串),而右侧则放置希望格式化的值(可以是元组或字典等)。

注意

如果格式化里面包含了百分号,那么必须使用%%,这样Python就不会将百分号误认为是转换说明符了。

基本的转换说明符包含以下部分,注意其中的顺序:

  1. %字符:标记转换说明符的开始
  2. 转换标识(可选):-表示左对齐;+表示在转换值之前要加上正负号;""空白字符表示正数之前保留空格;0表示转换值若位数不够则用0填充
  3. 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出
  4. 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。
  5. 转换类型,详见下表:
字符串格式转换类型
格式描述
%c字符及其ASCII码
%s字符串(使用str转换任意Python对象)
%r字符串(使用repr转换任意Python对象)
%d(%i)有符号整数(十进制)
%u无符号整数(十进制)
%o无符号整数(八进制)
%x无符号整数(十六进制)
%X无符号整数(十六进制大写字符)
%e浮点数字(科学计数法)
%E浮点数字(科学计数法,用E代替e)
%f(%F)浮点数字(用小数点符号)
%g浮点数字(根据值的大小采用%e或%f)
%G浮点数字(类似于%g)
%p指针(用十六进制打印值的内存地址)
%n存储输出字符的数量放进参数列表的下一个变量中

1.1 简单转换

简单的转换只需要写出转换类型即可,如下:

 1 # --- coding: utf-8 ---
 2 from math import pi
 3 
 4 # 输出:'price of eggs: $42'
 5 print 'price of eggs: $%d' % 42
 6 
 7 # 输出:'Hexadecimal price of eggas: 2a'
 8 print 'Hexadecimal price of eggas: %x' % 42
 9 
10 # 输出:'Pi: 3.141593...'
11 print 'Pi: %f...'% pi
12 
13 # 输出:'Very inexact estimate of pi: 3'
14 print 'Very inexact estimate of pi: %i' % pi
15 
16 # 输出:'using str: 42'
17 print 'using str: %s' % 42L
18 
19 # 输出:'Using repr: 42L'
20 print 'Using repr: %r' %42L

1.2 字段宽度和精度

转换说明符可以包括字段宽度和精度。字段宽度是转换后的值保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。

 1 # --- coding: utf-8 ---
 2 from math import pi
 3 
 4 # 输出:  3.141593
 5 print '%10f' % pi # 字段宽:10
 6 
 7 # 输出:      3.14
 8 print '%10.2f' % pi # 字段宽:10,精度:2
 9 
10 # 输出:3.14
11 print '%.2f' % pi #精度2
12 
13 # 输出:Guido
14 print '%.5s' % 'Guido van Rossum' # 精度:5
15 
16 # 输出:Guido(使用元组参数-精度)
17 print '%.*s' % (5,'Guido van Rossum') # 精度:5
18 
19 # 输出:     Guido(使用元组参数-字段宽,精度)
20 print '%*.*s' % (10,5,'Guido van Rossum') # 字段宽:10,精度:5

 

1.3 符号、对齐和0填充

在字段宽度和精度值之前可以(可选)放置一个"标表",该标表的值可以是:

  • 0(零):表示数字将会用0进行填充
  • +(加号):表示不管是正数还是负数都标示出符号(在对齐时很有用)
  • -(减号):表示左对齐数值
  • 空格:表示正数前加上空格,这对需要对齐正负数时会很有用

具体使用方法可以参考下面的示例:

 1 # --- coding: utf-8 ---
 2 from math import pi
 3 
 4 # 输出:0000003.14
 5 print '%010.2f' % pi
 6 
 7 # 输出:3.14
 8 print '%-10.2f' % pi
 9 
10 # 输出:
11 #    10
12 #   -10
13 print ('% 5d' % 10) + '\n' + ('% 5d' % -10)
14 
15 # 输出:
16 #   +10
17 #   -10
18 print ('%+5d' % 10) + '\n' + ('%+5d' % -10)

 

2. 常用字符串函数

2.1 find

find函数可以在一个较长的字符串中查找子字符串。并返回子串所在位置的最左端索引,如果没有找到则返回:-1,如下所示:

 1 # --- coding: utf-8 ---
 2 title = "Monty Python's Flying Circus"
 3 
 4 # 返回:6
 5 print title.find('Python') 
 6 
 7 # 返回:-1
 8 print title.find('ruby')
 9 
10 # 返回:6,提供查找起始点(包含)
11 print title.find('Python',6)
12 
13 # 返回:6,提供查找起始点(包含)和结束点(不包含)
14 print title.find('Python',6,12)

 

2.1 join

join函数用来在队列中添加元素,和split函数作用相反。如下:

 1 # --- coding: utf-8 ---
 2 seq = ['1','2','3','4','5']
 3 sep = '+'
 4 dirs ='','usr','bin','env'
 5 
 6 # 输出:1+2+3+4+5
 7 print sep.join(seq)
 8 
 9 # 输出:/usr/bin/env
10 print '/'.join(dirs)
11 
12 # 输出:C:\usr\bin\env
13 print 'C:' + '\\'.join(dirs)

2.2 lower

lower函数返回字符串的小写字母版本。如下:

1 # --- coding: utf-8 ---
2 # 输出:apple
3 print 'APPLE'.lower()

2.3 replace

replace函数返回某字符串的所有匹配项均被替换自后得到字符串。如下:

1 # --- coding: utf-8 ---
2 # 输出:Theez eez a test.
3 print 'This is a test.'.replace('is','eez')


2.4 split

join的逆函数,用来将字符串分割成序列,如下:

 1 # --- coding: utf-8 ---
 2 seq = '1+2+3+4+5'
 3 unix_dirs ='/usr/bin/env'
 4 windows_dir = r'C:\usr\bin\env'   
 5 
 6 print seq.split('+')
 7 print unix_dirs.split('/')
 8 print windows_dir.split('\\')
 9 # 分别打印输出:
10 # ['1', '2', '3', '4', '5']
11 # ['', 'usr', 'bin', 'env']
12 # ['C:', 'usr', 'bin', 'env']

 

2.5 strip

strip函数剔除字符串两侧空格字符串(默认):

1 # --- coding: utf-8 ---
2 fruit = ' apple and orange '
3 print repr(fruit)
4 print repr(fruit[:].strip())
5 print repr(fruit.strip(' app'))
6 # 分别输出:
7 # ' apple and orange '
8 # 'apple and orange'
9 # 'le and orange'

 

2.6 translate

translate函数和replace函数一样,用于替换字符串中的某个部分,但是和replace不同,translate只处理单个字符,而且可以同时进行多个替换。在使用translate函数转换之前,需要一张转换表,转换表中是以某个字符替换某个字符的对应关系,这个表中有256个字符,我们可以通过使用string模块中的maketrans函数简化这一操作:

1 # --- coding: utf-8 ---
2 from string import maketrans
3 table = maketrans('cs','kz')
4 # 输出:thiz iz an inkredible tezt
5 print 'this is an incredible test'.translate(table)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,Python 计算思维训练——字典和字符串(一)。 在Python,字典(dictionary)是一种非常有用的数据结构,它可以存储键值对(key-value pairs),并且可以根据键快速地查找相应的值。字典的键必须是不可变的类型,比如字符串、整数或元组等,而值可以是任意类型。字典的语法使用花括号 {},并且键值对之间用冒号 : 分隔。 例如,下面的代码创建了一个简单的字典,其包含了三个键值对。 ``` info = {'name': '张三', 'age': 18, 'gender': '男'} ``` 你可以通过以下方式访问字典的值: ``` print(info['name']) # 输出:张三 print(info['age']) # 输出:18 print(info['gender']) # 输出:男 ``` 如果字典不存在指定的键,则会抛出 KeyError 异常。你可以使用字典的 get() 方法来避免这种异常,该方法在键不存在时会返回一个默认值(默认值为 None)。 ``` print(info.get('address')) # 输出:None ``` 另外,你可以使用 in 关键字来检查一个键是否存在于字典。 ``` print('name' in info) # 输出:True print('address' in info) # 输出:False ``` 除了创建字典,还可以通过字典推导式来创建字典。字典推导式的语法与列表推导式类似,只不过使用花括号 {} 来表示字典。 例如,下面的代码创建了一个简单的字典,其包含了前五个自然数的平方。 ``` squares = {x: x**2 for x in range(1, 6)} print(squares) # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25} ``` 接下来,我们来看一下字符串(string)的相关操作。字符串Python 最常用的数据类型之一,它可以用来表示文本或字符序列Python字符串是不可变的,也就是说,一旦创建了一个字符串,就不能修改它的内容。 你可以使用单引号、双引号或三引号来创建一个字符串。如果字符串包含了单引号或双引号,则需要使用转义字符 \ 来表示。 例如,下面的代码分别创建了三个字符串,分别使用了单引号、双引号和三引号。 ``` s1 = 'Hello, world!' s2 = "Python is awesome!" s3 = """This is a multi-line string that spans multiple lines.""" ``` Python字符串支持许多常用的操作,比如字符串拼接、字符串截取、字符串替换、字符串查找等等。在后面的训练,我们会逐一介绍这些操作。 好了,以上就是本次的 Python 计算思维训练,主要介绍了字典和字符串的基本使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值