目录
- python中字符串及其格式转换技巧
-
- 其他数据转为字符串
- 字符串的格式化
- 带格式限定符的格式化
- 字符串的连接
- 字符串切片
- 字符串转换为 ASCII 值
python中字符串及其格式转换技巧
在python语言中,对字符串的处理可以说是在所有编程语言中最灵活的一种,Python字符串可以理解为一个数组,在不引入第三方库的情况下,就可以实现字串的各种处理,下面举例说明
其他数据转为字符串
python中,数字,链表、集合等都可以转换为字符串,也可以指定转换的精度,例如:
数字64转为二进制、十进制、八进制、十六进制字符对应为:
'{:b}'.format(64) #二进制
返回:
'1000000'
十进制
'{:d}'.format(64) #十进制
返回:
'64'
八进制
'{:o}'.format(64) #八进制
返回:
'100'
十六进制
'{:x}'.format(64) #十六进制
返回
'40'
分别使用了b、d、o、x的进制标识。
对浮点数,精度可以跟类型f一起使用,
'{:.2f}'.format(321.33345)
输出为:
'321.33'
如果数字比较大,还可以用 ‘,‘分段,例如:
'{:,d}'.format(123456789)
返回:
'123,456,789'
字符串的格式化
python字符串格式化通过方法 format()实现,用法为:
S.format(*args, **kwargs) -> str
其中:
S:为需要执行格式化的字符串。通常包括{}组成的替换字段、字符串常量和标识符号等,替换字段可以通过{位置}或{关键字}指出。
args:替换字段对应的值。
通过format()方法,可以将字符串格式化为指定的格式,同时将入参值赋值给字符串指定的替换字段,例如:
'welcome {} to {}'.format('zhangsan','beijing')
返回字符串为:
'welcome zhangsan to beijing'
字符串的format方法接受参数不限个数,位置可以不按顺序,可以不用或者用多次,例如:
'welcome {0},{0}\'father,{0}\'mother to {1}'.format('zhangsan','beijing')
返回字符串为:
"welcome zhangsan,zhangsan'father,zhangsan'mother to beijing"
唯一区别的是{}中需要加入重复替换的参数序号即可,另外,除了位置替换,也可以使用名称替换,例如:
lsstr='公司名:{name},网站:{web},地址:{add}'
s=lsstr.format(name='百度',web='www.baidu.com',add='北京')
print(s)
返回为:
‘公司名:百度,网站:www.baidu.com,地址:北京'
带格式限定符的格式化
在程序设计中,我们经常需要对字符串进行对齐处理,实现不同长度字符串输出的整齐排列,这就需要进行格式化和补全操作,在python中有丰富的的“格式符”来实现这一点
其语法是{}中带:、^、<、>格式限定符,分别是对应填充符号、居中、左对齐、右对齐,
:号后面带填充的字符,且只能是一个字符,也可以不指定,默认是用空格填充,最后面可以带输出的字符串长度,例如:
'{:>8}'.format('189')
返回值为:
' 189'
为一个长度为8,左边填充空格的字符串
再比如:
'{:*^8}'.format('189')
返回值为:
'**189***'
为一个长度为8,189居于中心,两侧填充*的字符串
字符串的连接
python的字符串连接方法也很多,例如通过print等等,如果需要对链表等复杂类型连接,可以通过函数 join进行,用字符串依次连接列表中每一个元素,例如:
str_list = ['I ','am ','an ','engineer']
a.join(str_list)
返回:
'I am an engineer'
字符串切片
如果需要获取字符串的某一部分,可以使用
str[beginPosition:endPosition]
其中str为需要截取的字符串,beginPosition为需要截取的第一个字符的下标,endPosition为截取字符最后一个的位置,需要注意的是beginPosition和endPosition为下标值,均从0开始,包含beginPosition,不包含endPosition位置的字符,例如:
text = 'asd123456'
text[1:3]
返回为:
'sd'
当然,beginIndex,endPosition都可以不写,不写的情况默认第一个或者最后一个,例如:
text[:3] 返回'asd'
text[5:]返回'3456'
字符串转换为 ASCII 值
在python中,一般使用使用 for 循环和 ord() 函数获取字符串的 ASCII值,其中ord()函数来获取字符串的 ASCII 值,函数返回传递字符串的 Unicode。它接受1作为字符串的长度。for循环用于迭代序列,举例如下:
text = 'asd123456'
ascii_values = [ord(character) for character in text]
print(ascii_values)
返回值为
[97, 115, 100, 49, 50, 51, 52, 53, 54]