给妹子讲python-S01E06字符串用法进阶

简介: 本文讲述字符串的查找与替换、字符串的提取、连接与空白去除、字符串的格式化输出与类型转换、转义字符与原始字符串等内容。

【妹子说】前面一集是初步接触了字符串,这一集可得多讲讲字符串的进阶用法呀。

没问题,首先我们说说python文本处理的头号工具:字符串的查找与替换。就类似于你在word里常用的ctrl+f那个功能。

字符串的find方法实现子字符串查找的操作,如果包含待查找的子字符串,find方法就返回他的偏移值,如果没有找到,就返回-1

s = 'abcdef'
print(s.find('cde'))
print(s.find('xy'))

2
-1

替换操作运用的是replace方法,参数是原始子字符串和用于替换的子字符串,之后进行全局搜索并替换。

s = 'abcdef'
print(s.replace('bcd','XXX'))

aXXXef

第三个参数表示替换的次数,如果不设置就表示全部替换,否则就表示替换前几个

再一个就是字符串的提取功能,用split方法。利用字符串中存在的分隔符,将其拆分成子字符串,并返回其所组成的列表,这个在文本获取及解析的过程中是非常有用的。

s = 'Tom,21,USA,UCLA'
l = s.split(',')
print(l)

['Tom', '21', 'USA', 'UCLA']

如果这些字符是空格隔开的,方法也是一模一样的

s = 'Tom 21 USA UCLA'
l = s.split(' ')
print(l)

['Tom', '21', 'USA', 'UCLA']

那反过来,如果要将列表中的元素连接成一个字符串呢,那也有对应的方法,即join方法。他使用指定的分隔符将列表中的元素连接成一个字符串,并用指定的分隔符对其进行分割。

这里的分隔符可以是一个空字符,相当于直接连接

L = ['s', 'p', 'a', 'm', 'm', 'y']
s = ''.join(L)
print(s)

spammy

也可以实际指定一个分隔符,如“-”

L = ['s', 'p', 'a', 'm', 'm', 'y']
s = '-'.join(L)
print(s)

s-p-a-m-m-y

如果字符串的两侧有空格、回车换行等,则可以用strip方法将这些“非内容”部分都去掉,使之变成一个“干货”

s = '    Tom 21 USA UCLA\n\n'
print(s)
print(s.strip())

Tom 21 USA UCLA


Tom 21 USA UCLA

从结果看,字符串左侧的空格和右侧的换行,都被去掉了。

我们再来谈谈字符串的格式化输出。

python中字符串的格式化输出我觉得非常好用,因为我们并不是总能一开始就能获得一个信息完备的字符串常量,很多关键信息是在运行时从其他地方获取并需要动态赋值的。

比如就说我吧,名字是酱油哥,28岁老叔叔,本硕毕业于HUST和THU。如果这里面的关键个人信息都是在运行的过程中赋值的,那该怎么用呢?看看这个例子:

name = '酱油哥'
age = 28
school = ['HUST','THU']
s = 'name:{},age:{},and graduates from{}'.format(name,age,school)
print(s)

name:酱油哥,age:28,and graduates from['HUST', 'THU']

这里我们不难发现,每一个花括号就是一个占位符,后面的变量依次进行对应,最关键的是,这三个变量分别是不同的对象类型,甚至还有一个列表对象,但是在字符串格式化时不需要我们对此进行任何的区分、处理。

至于说占位符和格式化方法中各参数的对应关系,上面使用的是默认的情况,即:按顺序、一一对应。

当然,也可以显式的指明各个占位符的顺序

template = '{1},{0} and {2}'
s = template.format('spam', 'ham', 'eggs')
print(s)

ham,spam and eggs

也可以按照键的顺序进行对应排列,这一种感觉用的更常见一些

template = '{key1},{key2} and {key3}'
s = template.format(key1 = 'spam', key2 = 'ham', key3 = 'eggs')
print(s)

spam,ham and eggs

在格式化的方法中,还包括一些特殊的数字输出的案例,我们重点说两个,一个是浮点数指定位数输出,一个是二进制数输出。

比如,这个例子,我们保留两位小数输出浮点数

template = 'float number = {:.2f}'
s = template.format(10.4567)
print(s)

float number = 10.46

再者,用二进制输出指定数据

template = 'number = {:b}'
s = template.format((2 ** 16) -1)
print(s)

number = 1111111111111111

最后,我们来谈谈字符串中的转义符,碰到斜杠进行转义,这是一个常识,常见的一个例子:

s = 's\tp\nam'
print(s)

s p
Am

转义字符有很多,但是我并不是想着重说这个,因为学过C语言的都对此有所了解,大不了要用的时候再去查嘛。

这里要说一下python里的一个反其道而行之的方法,就是原始字符串:

如果想表达一个文件名的时候,转义字符反而会引入麻烦,里面的n和t都会被换行符和制表符所替代,此时我们不需要转义,倒是想所见即所得,这就得使用raw字符串,在字符串前加一个r就能关闭转义机制。

s = r'c:\new\test.py'
print(s)

c:\new\test.py

【妹子问】那python字符串可以自由的转换数字和字符串么?

这个问题很好,python的方便之处就体现在许多这样的小细节上,我们来谈谈字符串、int类型和浮点类型的转换。

设想这么一个背景,如果脚本从文件或用户界面得到一个文本字符串形式的数字,则需要使用转换工具进行预先处理,否则会报错。

s = '19'
i = 3
print(s+i)

Traceback (most recent call last):
 File "E:/12homework/12homework.py", line 3, in <module>
print(s+i)
TypeError: Can't convert 'int' object to str implicitly

正确的做法是:

将字符串转换为int型

s = '19'
i = 3
print(int(s) + i)

22

将int型转换为str型

s = '19'
i = 3
print(s + str(i))

193

字符串和浮点数转换的方法是

print(float('1.5'), str(4.56))

十进制int和二进制直接的转换

print(bin(12))
print(int('1110',2))

0b1100
14

有了这些函数,我们就能十分方便的实现这些转换功能了。

【妹子说】感觉头皮略微发麻呀,说实话不太喜欢类似这一集的知识内容,感觉知识点很琐碎也很刻板。不过没办法,都是应用所必须的,那就多加练习吧~

原文发布时间为:2018-08-01
本文作者:酱油哥
本文来自云栖社区合作伙伴“ Python爱好者社区”,了解相关信息可以关注“ Python爱好者社区

相关文章
|
16天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
1月前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
20 1
|
1月前
|
Python
请解释Python中的递归是什么?并举例说明其用法。
【2月更文挑战第25天】【2月更文挑战第85篇】请解释Python中的递归是什么?并举例说明其用法。
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
47 0
|
8天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
15天前
|
Python
python中threads.append的用法
将线程对象`t`添加到`threads`列表便于管理与控制线程,如等待所有线程完成。通过迭代列表并调用`join`方法,可依次等待每个线程执行完毕,实现同步。代码示例: ```python for t in threads: t.join() print(&quot;All threads are done!&quot;) ``` `join`方法使当前线程阻塞,直到线程执行结束。所有线程完成后,输出&quot;All threads are done!&quot;。
15 1
|
16天前
|
Java 索引 Python
Python标准数据类型-字符串常用方法(下)
Python标准数据类型-字符串常用方法(下)
21 1
|
16天前
|
XML 编解码 数据格式
Python标准数据类型-String(字符串)
Python标准数据类型-String(字符串)
23 2
|
16天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)
|
1月前
|
JSON C++ 数据格式
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
87 0