一、将某个对象转换为字符串,有str()和repr()两种方法
区别:
repr() 转化为供解释器读取的形式
str() 转化为适于人阅读的形式
a = 123456
print('repr输出:', repr(a))
print('str输出:', str(a))
b = "Hello,\nworld"
print('repr输出:', repr(b))
print('str输出:', str(b))
运行结果:
repr输出: 123456
str输出: 123456
repr输出: 'Hello,\nworld'
str输出: Hello,
world
二、长字符串跨行
可以用下面几种方式
1、字符串用三引号'''、或三个双引号"""括起来
a = '''Hello,
world'''
print(a)
运行结果:
Hello,
world
2、行尾加上反斜杠 \,运行结果和上面区别是字符串不换行
b = "Hello,\
world"
print(b)
运行结果:
Hello,world
如果要指定以反斜杠结尾,需要再加2个反斜杠 \
b = "Hello,\\\
world"
print(b)
运行结果:
Hello,\world
三、原始字符串,前缀加上r
print('c:\now')
print(r'c:\now')
运行结果如下,原始字符串会原样输出:
c:
ow
c:\now
原始字符串不能以单个反斜杠 \结尾,如果要指定以反斜杠结尾,可以将反斜杠单独作为作为一个字符串
print(r'c:\now''\\')
运行结果:
c:\now\
四、字符串的格式化
1、用百分比符号 % 表示,在%左边指定一个字符串,在%右边指定要设置格式的值。
指定要设置其格式的值(如字符串或数字)时,可使用单个值,也可使用元组、字典。
常用的几个格式化符号:
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数字,可指定小数点后的精度
print("Hello,%s" % "world")
format = "%d %f %.2f"
values = (2019, 2010, 2011)
result = format % values #这里的%两旁也可以不留空格
print(result)
运行结果:
Hello,world
2019 2010.000000 2011.002、模板字符串格式化,使用关键字参数赋值
from string import Template
tmpl = Template("Hello, $who!$year")
print(tmpl.substitute(who="world",year=2019))
运行结果:
Hello, world!2019
3、变量与替换字段同名,可使用简写,在字符串前面加上f
h = "Hello"
w = "world"
print(f"{h},{w}")
运行结果:
Hello,worlds
4、使用字符串方法format,每个替换字符用花括号{}表示
4.1精简版
(1)未命名字段,直接花括号
a = "{},{}".format("Hello","world")
print(a)
运行结果:
Hello,world
(2)索引
a = "{1},{0}, {1}".format("Hello","world")
print(a)
运行结果:
world,Hello, world
(3)命名字段
a = "{h},{w}".format(h="Hello", w="world")
print(a)
运行结果:
Hello,world
4.2完整版
完整版的格式化字符串中,替换字段由如下部分组成,其中每个部分都是可选的。
☐字段名:索引或标识符
☐转换标志:跟在叹号 ! 后面的单个字符。当前支持的字符包括r(repr)、s(str)和a(ascii)
☐格式说明符:跟在冒号 : 后面的表达式。可指定格式类型(如字符串、浮点数或十六进制数)字段宽度和数的精
度如何显示符号和千位分隔符,以及各种对齐和填充方式。
(1)字段名
可同时混合使用未命名字段、命名字段,或者索引、命名字段
a = "{},{w}".format("Hello",w="world")
print(a)
b = "{0},{w}".format("Hello",w="world")
print(b)
运行结果:
Hello,world
Hello,world
但不能同时混合使用未命名字段、索引。像下面代码会出错。
c = "{0},{}".format("Hello","world")
(2)转换标志
print("{pi!s} {pi!r} {pi!a}".format(pi = "π"))
运行结果:
π 'π' '\u03c0'
(3)格式说明符
(a)指定值转换为某种类型
a = "Hello,{w:s},{y:d},{y:f},{y:.2f},{y:b},{y:%}".format(w="world", y=2019)
print(a)
运行结果:
Hello,world,2019,2019.000000,2019.00,11111100011,201900.000000%
一些类型说明符:
s 字符串格式,这是默认用于字符串的说明符
d 整数格式,这是整数默认使用的说明符
f 浮点数,默认6位小数,可在前面加.数字表示保留多少位小数
b 将整数表示为二进制数
% 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加%)
(b)设置宽度
■字符串在右边填充空格,数字则在左边填充空格;
print("{h:10},world".format(h="hello"))
print("{y:10}end".format(y=2019))
运行结果:
hello ,world
2019end
■可同时指定宽度和精度;
print("{y:10.2f}end".format(y=2019))
运行结果:
2019.00end
■指定宽度的数前面可以添加一个标志,可以指定零、加号、减号、空格,其中0是填满。
print("{:010.2f}".format(2019))
运行结果:
0002019.00
(c)对齐说明符:指定左对齐、右对齐和居中,可分别使用<、>和^
对齐说明符默认是用空格填充,可在对齐符号前面用指定字符来填充
print("{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}\n{0:->10.2f}".format(2019))
运行结果:
2019.00
2019.00
2019.00
---2019.00
(d)为数字加上符号,使用说明符+
print("{}\n{:+}\n{:+}".format(2019,2019, -2019))
运行结果:
2019
+2019
-2019
(e)井号符 :对于二进制、八进制、十六进制将加上前缀,对于十进制,加上小数点。
print("{0:b},{0:o},{0:x},{0:d}".format(10))
print("{0:#b},{0:#o},{0:#x},{0:#d}".format(10))
1010,12,a,10
0b1010,0o12,0xa,10
(f)千分比分隔符:用逗号分隔
a = "{:,}".format(123456789)
print(a)
运行结果:
123,456,789
五、字符串方法列表
方法 | 描述 |
---|---|
string.capitalize() |
把字符串的第一个字符大写 |
string.center(width) |
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 |
string.count(str, beg=0, end=len(string)) |
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
string.decode(encoding='UTF-8', errors='strict') |
以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace' |
string.encode(encoding='UTF-8', errors='strict') |
以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
string.endswith(obj, beg=0, end=len(string)) |
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
string.expandtabs(tabsize=8) |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。 |
string.find(str, beg=0, end=len(string)) |
检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 |
string.format() |
格式化字符串 |
string.index(str, beg=0, end=len(string)) |
跟find()方法一样,只不过如果str不在 string中会报一个异常. |
string.isalnum() |
如果 string 至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
string.isalpha() |
如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
string.isdecimal() |
如果 string 只包含十进制数字则返回 True 否则返回 False. |
string.isdigit() |
如果 string 只包含数字则返回 True 否则返回 False. |
string.islower() |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
string.isnumeric() |
如果 string 中只包含数字字符,则返回 True,否则返回 False |
string.isspace() |
如果 string 中只包含空格,则返回 True,否则返回 False. |
string.istitle() |
如果 string 是标题化的(见 title())则返回 True,否则返回 False |
string.isupper() |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
string.join(seq) |
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
string.ljust(width) |
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
string.lower() |
转换 string 中所有大写字符为小写. |
string.lstrip() |
截掉 string 左边的空格 |
string.maketrans(intab, outtab]) |
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
max(str) |
返回字符串 str 中最大的字母。 |
min(str) |
返回字符串 str 中最小的字母。 |
string.partition(str) |
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. |
string.replace(str1, str2, num=string.count(str1)) |
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. |
string.rfind(str, beg=0,end=len(string) ) |
类似于 find()函数,不过是从右边开始查找. |
string.rindex( str, beg=0,end=len(string)) |
类似于 index(),不过是从右边开始. |
string.rjust(width) |
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
string.rpartition(str) |
类似于 partition()函数,不过是从右边开始查找 |
string.rstrip() |
删除 string 字符串末尾的空格. |
string.split(str="", num=string.count(str)) |
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串 |
string.splitlines([keepends]) |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
string.startswith(obj, beg=0,end=len(string)) |
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. |
string.strip([obj]) |
在 string 上执行 lstrip()和 rstrip() |
string.swapcase() |
翻转 string 中的大小写 |
string.title() |
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
string.translate(str, del="") |
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 del 参数中 |
string.upper() |
转换 string 中的小写字母为大写 |
string.zfill(width) |
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 |