Python字符串处理
很早就有写博客的想法了,这是第一次动手写。内容很简单,权当复习了,之后有空会写写机器学习相关的东西。
关于字符串,可以当做 list 拼接起来的,所以一样可以两个相加拼接,*重复, in/ not in判断, slice切片什么的,这些就不写了。提一下,字符串前缀 r, 一般用在路径或者正则表达式上,防止转义。u即unicode,本身就是以unicode进行编码的,因此使不使用区别不大。b将字符串转为bytes类型,可以decode解码。这些内建函数后面会提到。
本文主要内容为两部分:
- str格式化输出
- str常用内建函数
str格式化输出
1.格式化操作符%
- 注意:多于一个内容时,需要以元组的形式括起
print("my name is %s, i am %d years old." % ("XXX", 20))
# my name is XXX, i am 20 years old.
print("%.2f, %.3e" % (123.456, 123.456))
# 123.46, 1.235e+02
print("%x, %X" % (123, 123))
# 7b, 7B
常用格式化符号
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%p | 用十六进制数格式化变量的 |
使用辅助指令
print("%+d, %+d" % (2, -2))
# +2, -2
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
< sp > | 在正数前面显示空格 |
0 | 显示的数字前面填充’0’而不是默认的空格 |
(var) | 映射变量(字典参数) |
2.format格式化输出
print("my name is {}, i am {} years old.".format("XXX", 20))
按顺序输出
print("my name is {1}, i am {0} years old.".format(20, "XXX"))
使用序号
print("my name is {name}, i am {age} years old.".format(name="XXX", age=20))、
使用关键字
kws = {"name": "XXX", "age": 20}
print("my name is {name}, i am {age} years old.".format(**kws))
以字典形式,需要前缀**
# my name is XXX, i am 20 years old.
str常用内建函数
函数名称 | 作用 |
---|---|
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认空格 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数 |
decode(encoding=”utf-8”, errors=”strict”) | 使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象 |
encode(encoding=’UTF-8’,errors=’strict’) | 以 encoding 指定的编码格式编码字符串 |
find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中。找到返回起始index,没找到返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
isdigit(),islower(),isnumeric()… | 顾名思义 |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(字符)合并为一个新的字符串 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串 |
lower() | 转换字符串中所有大写字符为小写 |
replace(old, new, max) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次 |
split(str=”“, num=string.count(str)) | 以 str 为分隔符截取字符串,不包含str本身 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip(),去除空白符 |
如果想对字符串精细过滤的话,还是采用正则表达式吧,这个教程我觉得还不错
https://www.jb51.net/tools/zhengze.html#introduction
简单举个例子
string = "hello world"
print(string[string.find('h'): string.find('d') + 1])
# hello world
......
......