给妹子讲python-S01E05字符串的基本用法

简介: 本文讲述字符串的基本用法。

python中一项很重要的工作就是文本处理,与之紧密相关的数据类型是字符串,从这一集开始,我们由浅入深介绍一系列关于字符串的内容。

【妹子说】之前刚刚介绍了容器,字符串应该可以看做是字符的容器吧?

可以这么理解,字符串就是由单个字符组成的有序序列,且不可修改。

类比前面提到的列表,如正向索引、反向索引、分片索引等基于偏移量的基本操作,字符串都是支持的。

下面列举一些与列表类似的操作,需要强调一点的是字符串的分片操作,分片就是从一整个字符串中分离提取出一部分内容(即子字符串),从而获取所需的部分数据,并且python返回的是包含所获取元素的新对象。

分片操作在实际使用时用处很多,比如:我们可以在命令行字符串中去分离感兴趣的参数列表。

s = 'abcdefg'
print(s[0])
print(s[-2])
print(s[1:4])
print(s[1:4:2])
print(s[-1:1:-1])
print(len(s))

a
f
bcd
bd
gfedc
7

再来看看字符串的不可修改特性。

s = 'abcd'
s[0] = '4'

Traceback (most recent call last):
 File "E:/12homework/12homework.py", line 2, in <module>
   s[0] = '4'
TypeError: 'str' object does not support item assignment

再说说两个字符串之间的连接操作。即所谓的字符串相加,返回连接后生成的新字符串

s1 = 'abcd'
s2 = '1234'
s = s1 + s2
print(s)

abcd1234

【妹子说】那字符串的赋值,也是用=直接赋值吧

对,不过针对赋值,有深拷贝和浅拷贝两种意义截然不同的方式。

下面这种赋值方法实际上是对象的深拷贝,即赋值左右的两个对象具有相同值,但是是位于不同内存片区的对象

s = ['abcdefg']
a = s[:]
print(a)
print(s is a)

['abcdefg']
False

而如果是像下面这样直接赋值,则左右两个对象实际上被分配的是同一个内存空间,即所谓的浅拷贝

s1 = 'abcdefg'
s2 = s1
print(s1 == s2)

True

【妹子说】明白了,那字符串作为一种序列,也能进行遍历和成员关系测试吧。

当然,可以使用for语句在一个字符串中进行循环迭代,并使用in操作符对字符和子字符串进行成员关系的测试

s = 'hacker'
for c in s:
    print(c, end=' ')

h a c k e r 


print('k' in 'school')

False

以上都是字符串与容器相类似的一些操作,有之前几集学习的基础,接受起来还是挺容易的。

【妹子说】把字符串和容器序列进行类比,很多用法就不言自明了。这些共性的方法倒是好理解,也比较简单,那后面再介绍一些字符串的独门秘诀吧。

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

相关文章
|
14小时前
|
数据安全/隐私保护 开发者 Python
【Python 基础】检查字符串是否只包含数字和字母?
【5月更文挑战第8天】【Python 基础】检查字符串是否只包含数字和字母?
|
14小时前
|
Python
【Python 基础】如何将一个字符串转化为全大写和全小写?
【5月更文挑战第8天】【Python 基础】如何将一个字符串转化为全大写和全小写?
|
2天前
|
Python Perl
Python中的字符串分析:判断字符串中是否包含字母
Python中的字符串分析:判断字符串中是否包含字母
8 0
|
2天前
|
C语言 Python
【Python 基础】如何进行字符串插值?
【5月更文挑战第6天】【Python 基础】如何进行字符串插值?
|
2天前
|
存储 监控 Python
python 日期字符串转换为指定格式的日期
python 日期字符串转换为指定格式的日期
14 3
|
2天前
|
数据处理 Python
Python中按指定数量分割列表字符串的方法
Python中按指定数量分割列表字符串的方法
9 1
|
9天前
|
存储 算法 Python
【亮剑】如何在 Python 中查找两个字符串之间的差异位置?
【4月更文挑战第30天】本文探讨了Python中查找两个字符串差异位置的方法。首先,通过内置函数和基本字符串操作,可以逐个字符比较找到第一个不同位置。其次,利用`difflib`库的`SequenceMatcher`能获取更详细的差异信息。最后,通过实现Levenshtein距离算法,可以计算字符串间的最小编辑距离。根据需求选择合适的方法,能提升代码效率和可读性。
|
9天前
|
Python 容器
Python中的for循环用法详解,一文搞定它
Python中的for循环用法详解,一文搞定它
|
10天前
|
Go 索引 Python
非常全面的python字符串相关处理方法(二)
非常全面的python字符串相关处理方法(二)
|
10天前
|
存储 索引 Python
非常全面的python字符串相关处理方法(一)
非常全面的python字符串相关处理方法(一)