Python 字符串(三)

本文详细介绍了Python中的字符串基础知识,包括单引号和双引号的使用,三引号表示多行字符串,转义字符,raw字符串,字符串访问(索引和切片),字符转换(ord和chr函数),字符串方法(如replace、find、join和split等),以及字符串格式化(%操作符和format方法)。此外,还展示了如何在字符串中进行各种操作,如拼接、复制、查找、转换大小写等。
摘要由CSDN通过智能技术生成

首先申明下,本文为笔者学习《Python学习手册》的笔记,并加入笔者自己的理解和归纳总结。

1. 单引号和双引号

在Python里面单引号和双引号的作用是一样的。
如果字符串内包含单引号和双引号,可以在使用另一种引号或者转义字符。

>>> "hello 'world'"      # 双引号内包含单引号
"hello 'world'"

>>> 'hello "world"'      # 单引号内包含双引号
'hello "world"'

>>> 'hello \'world\''    # 对单引号进行转义
"hello 'world'"

>>> "hello \"world\""    # 对双引号进行转义
'hello "world"'

>>> val = "Hello " "World! " "Welcome to Python."
>>> val                  # 多个字符串合并成
'Hello World! Welcome to Python.'

2. 三引号表示多行

>>> val = """hello world
welcome to python
glad to see you"""
>>> val                  # 在字符串内使用'\n'
'hello world\nwelcome to python\nglad to see you'

>>> print val
hello world
welcome to python
glad to see you

3. 转义字符串

转义描述
\(在行尾时)续行符
\\反斜杠
\’单引号
\"双引号
\a响铃
\b退格
\f换页
\n新行
\r返回
\t水平制表符
\v垂直制表符
\xhh十六进制字符
\ooo八进制字符
\0空格

4. raw字符串

raw字符串在字符串前面加上"r"字符,关闭转义机制。

>>> path = "e:\text\text.txt"
>>> path                 # 未对字符串进行任何处理
'e:\text\text.txt'

>>> path = r"e:\text\text.txt"
>>> path                 # raw字符串使用转义字符对"\"处理
'e:\\text\\text.txt'

5. 字符串访问

使用索引访问字符串,从左往右依次从0开始递增,从右往左依次从-1开始递减。

>>> val = "HelloWorld!"
>>> val[1], val[5]       # 索引操作
('e', 'W')

>>> val[-1]              # 索引为负数时为(len + index)
'!'

分片,通过[:]的左右两边定义开始和结束位置,默认是0和len。

>>> val = "HelloWorld!"
>>> val[1:3]             # 从1开始,到3结束,不包含3
'el'

>>> val[:5]              # 从0开始,到5结束
'Hello'

>>> val[5:]              # 从5开始,到len结束
'World!'

>>> val[:]
'HelloWorld!'

>>> val[-6:-1]           # 为负数时,索引同样要从左往右
'World'

设置分片的步进,正数表示从左往右,负数表示从右往左。

>>> val = "123456789"
>>> val[::2]             # 步进为2
'13579'

>>> val[-1:-5:-1]        # 步进为负数时,从右往左进行
'9876'

6. 字符转换

>>> ord('a')             # 单个字符转换成对应的ASCII码
97

>>> chr(97)              # ASCII码转换成对应的单个字符
'a'

>>> str(97)              # 其他类型的变量转换成字符串
'97'

7. 字符串方法

7.1 基本操作

>>> "abc" + "def"                  # 加号把两个字符串合成新字符串
'abcdef'

>>> "hello" * 4                    # 乘号复制字符串
'hellohellohellohello'

>>> len('hello')                   # len计算字符串的长度
5

>>> for c in "helloworld":         # for遍历字符串
	print c,
h e l l o w o r l d

>>> "hello" in "helloworld"        # in查询字符串是否包含其他字符串
True

>>> "h" in "helloworld"
True

字符串与数字不能相加。

>>> "abc" + 12
Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    "abc" + 12
TypeError: cannot concatenate 'str' and 'int' objects

7.2 replace方法

replace()方法用来替代字符串,第三个参数表示替代的个数,默认是全部。

>>> val = "helloworld"
>>> val.replace("l", "xx")         # 替代所有l字符
'hexxxxoworxxd'

>>> val.replace("l", "xx", 2)      # 替代两处l字符
'hexxxxoworld'

>>> val.replace("ll", "xx")
'hexxoworld'

7.3 find方法

find()方法返回在字符串中的位置,没有返回-1。第二个参数表示开始位置,默认为0。

>>> val = "helloworld"
>>> val.find("llo")                # 查询字符串的位置
2

>>> val.find("o", 5)               # 设置开始位置
6

>>> val.find("Hello")              # 字符串不存在,返回-1
-1

7.4 join和split方法

>>> ":".join(["1", "2", "3", "4"]) # 将字符列表连接,并以自身为分隔符
'1:2:3:4'

>>> "1:2:3:4".split(":")           # 以":"分割字符串 
['1', '2', '3', '4']

>>> "1 2 3 4".split()              # 默认分隔符是空格
['1', '2', '3', '4']

7.5 其他方法

>>> val = "HelloWorld!"
>>> val.upper()                    # upper(),字符串转换成大写
'HELLOWORLD!'

>>> val.lower()                    # lower(),字符串转换成小写
'helloworld!'

>>> val.startswith("Hello")        # startswith(),查询是否以某字符串开始
True

>>> val.endswith("!")              # endswith(),查询是否以某字符串结尾
True

8. 字符串格式化

8.1字符串格式化表达式(%)

格式符%[(name)][flags][width][.precision]typecode

(name)可选,用于选择指定的key

>>> "%(name)s is %(age)d" % {"name":"Mike", "age":18}
'Mike is 18'

flags可选,可以选择的值有:
(+)右对齐,正数前加号,负数前减号。
(-)左对齐,正数前无符号,负数前减号。
(空格)右对齐,正数前空格,负数前减号。
(0)右对齐,正数前无符号,负数前减号,用0填充空白处。

>>> "%10d, %10d" % (1234, -1234)        # 默认右对齐
'      1234,      -1234'

>>> "%+10d, %+10d" % (1234, -1234)      # +,右对齐,显示符号
'     +1234,      -1234'

>>> "%-10d, %-10d" % (1234, -1234)      # -,左对齐,不显示加好
'1234      , -1234     '

>>> "%010d, %010d" % (1234, -1234)      # 0,右对齐,0是占位符
'0000001234, -000001234'

width可选,占有宽度。

.precision可选,小数点后保留的位数。

>>> "%010.4f" % (5.0/3)                 # 10位,显示4位小数
'00001.6667'

>>> "%.6f" % (5.0/3)                    # 显示6位小数
'1.666667'

>>> "%010.f" % (5.0/3)                  # 不显示小数
'0000000002'

typecode必选。

代码意义
s字符串
r字符串,使用repr
c字符
d十进制整数
i整数
u无号整数
o八进制整数
x十六进制整数
e浮点指数
E浮点指数
f浮点数
F浮点数
g浮点指数或浮点数
G浮点指数或浮点数
%常量%

整型

>>> x = 255
>>> "%d, %i, %u" % (x, x, x)            # 整型
'255, 255, 255'

>>> "%o, %x" % (x, x)                    # 八进制和十六进制
'377, ff'

浮点型

>>> x = 123.4567
>>> "%f, %F" % (x, x)
'123.456700, 123.456700'

>>> "%e, %E" % (x, x)
'1.234567e+02, 1.234567E+02'

>>> "%g, %G" % (x, x)
'123.457, 123.457'

8.2 字符串格式化方法调用

使用字符串的format()方法。在主字符串,通过花括号,使用序列或者关键字指出替代目标。

>>> "{0} {1}".format("Hello ", "World!")             # 通过序列替代目标
'Hello  World!'

>>> "{name} is {age}".format(name="Mike", age="18")  # 通过关键字替代目标
'Mike is 18'

>>> "{name} is {0}".format(18, name="Mike")          # 混合使用,序列替代在前
'Mike is 18 and live in ShangHai'

>>> "{1[name]} is {0}".format(18, {"name":"Mike"})   # 对替代结果操作
'Mike is 18'

在序列或者关键字后添加:,指定具体的格式,格式是[[fill]align][sign][#][0][width][.precision][typecode]

fill可选,空白处填充的字符。

align可选,对齐方式:
(<)内容左对齐。
(>)内容右对齐。
(=)内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。
(^)内容居中。

>>> "{0:-<20}".format("Hello World!")   # 左对齐,-填充
'Hello World!--------'

>>> "{0:->20}".format("Hello World!")   # 右对齐,-填充
'--------Hello World!'

>>> "{0:-^20}".format("Hello World!")   # 居中对齐,-填充
'----Hello World!----'

>>> "{0:0>20}".format(-1234)            # 右对齐,0填充,符号在填充右侧
'000000000000000-1234'

>>> "{0:0=20}".format(-1234)            # 右对齐,0填充,符号在填充左侧
'-0000000000000001234'

width可选,格式化所占宽度。

sign可选,有无符号数字
(+)正数前加号,负数前减号。
(-)正数前无符号,负数前减号。
(空格)正数前空格,负数前减号。

>>> "{0:+}, {1:+}".format(1234, -1234)  # 加号显示符号
'+1234, -1234'

>>> "{0:-}, {1:-}".format(1234, -1234)  # 减号不显示符号
'1234, -1234'

>>> "{0: }, {1: }".format(1234, -1234)  # 空格在正数前实现空格
' 1234, -1234'

#可选,对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x

>>> "{0:b}, {1:o}, {2:x}".format(255, 255, 255)      # 默认不显示
'11111111, 377, ff'

>>> "{0:#b}, {1:#o}, {2:#x}".format(255, 255, 255)   # 显示 0b/0o/0x
'0b11111111, 0o377, 0xff'

相关文章
Python 数字类型(一)
Python 布尔型(二)
Python 字符串(三)
Python 列表(四)
Python 字典(五)
Python 元组(六)
Python 集合(七)
Python 变量和作用域(八)
Python 语句(九)
Python 函数(十)
Python 类(十一)
Python 模块(十二)
Python 文档(十三)
Python 文件(十四)
Python 异常(十五)
Python 运算符重载(十六)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值