01-字符串定义和切片
在Python中,字符串是不可变的序列,在表示一组字符时,字符串以单引号''或双引号""括起来。字符串定义的方式如下:
# 使用单引号
msg = 'hello world!'
print(msg)
# 使用双引号
msg = "hello world!"
print(msg)
# 使用三引号可以表示多行字符串
msg = '''hello
world!'''
print(msg)
字符串可以使用索引来访问它的每一个字符,索引从0开始,也可以使用切片操作来获取子字符串。切片的基本语法是`[start:stop:step]`,即从开始位置到结束位置的子串。其中,`start`表示切片的起始位置(包含),`stop`表示切片结束位置(不包含),`step`表示步长,默认为1。
下面是字符串切片的几个例子:
msg = 'hello world!'
print(msg[0]) # 访问第一个字符
print(msg[-1]) # 访问最后一个字符
print(msg[0:5]) # 访问前5个字符
print(msg[6:]) # 访问第7个字符及其后面的所有字符
print(msg[0::2]) # 访问所有奇数位上的字符
02-字符串基本操作
字符串是一种重要的数据类型,在Python中,内置了非常多的操作字符串的方法。接下来,我们逐一介绍一些常用的字符串操作。
01-字符串连接
连接两个或多个字符串可以使用加号(+)操作符,也可以使用join()方法。加号操作符如下所示:
msg1 = 'hello'
msg2 = 'world'
print(msg1 + ' ' + msg2)
join()方法是将多个字符串连接成一个字符串,语法格式为:
`str.join(sequence)`
其中,`str`就是连接的字符串,`sequence`是多个要连接的字符串列表或元组。
下面是join()方法的例子:
wordList = ['this','is','a','list']
print(' '.join(wordList))
02-查找子串
在Python中,查找一个子串在字符串中的位置可以使用find()方法。如果找到了该子串,则返回该子串在原字符串中的索引值;否则,返回-1。用法如下:
`str.find(sub[, start[, end]])`
其中,`str`表示要查找的字符串,`sub`表示要查找的子字符串,在`[start, end]`区间中查找。
除了find()方法,还有一些其他的查找字符串的方法,例如index()和count()。这里不做详细介绍。
03-字符串替换
字符串中的某些字符或子串可以替换为其他字符或子串。替换操作可使用replace()方法完成。语法格式如下:
`str.replace(old, new[, count])`
其中,`str`表示原始的字符串,`old`表示要被替换的子字符串,`new`表示用来替换旧的字符串,`count`表示替换次数(可选参数,默认为全部替换)。
下面是一个字符串替换的例子:
msg = 'Hello World!'
new_msg = msg.replace('World', 'Python')
print(new_msg)
03-字符串操作练习
让我们进一步练习字符串操作的方法,下面是一些练习题:
01-判断字符串是否为空
def is_empty_string(str):
if not str:
return True
else:
return False
print(is_empty_string(''))
print(is_empty_string('hello'))
02-字符串转化为列表
msg = 'hello world'
lst = list(msg)
print(lst)
03-反转字符串
msg = 'hello world'
reverse_msg = msg[::-1]
print(reverse_msg)
04-字符串拆分和合并
msg = 'This is a sentence.'
words = msg.split(' ')
print(words)
new_msg = '-'.join(words)
print(new_msg)
05-大写和小写转换
msg = 'HeLLo WoRLd'
print(msg.upper())
print(msg.lower())
04-字符串格式化输出
Python中,字符串格式化输出是非常常用的功能。使用格式化输出,可以将变量值插入到字符串中,以便于输出。Python提供了多种格式化字符串的方法,下面介绍其中最常用的两种方式。
01-使用占位符
占位符表示在字符串中的某个位置留出空间,以便于将变量的值插入到该位置。Python中,占位符有以下几种:
| 占位符 | 说明 |
|--------|-------------------------|
| %s | 字符串 |
| %d | 十进制整数 |
| %x | 十六进制整数(小写字母)|
| %X | 十六进制整数(大写字母)|
下面是使用占位符格式化输出的例子:
name = 'Bill'
age = 25
print('My name is %s and I am %d years old.' %(name, age))
02-使用format()方法
另一种常用的格式化字符串的方法是使用format()方法。format()方法可以将其他数据类型转换为字符串,并插入到目标字符串中。用法如下:
`str.format(arg1, arg2, ...)`
其中,`str`表示目标字符串,`arg`表示要插入的参数。
下面是使用format()方法格式化输出的例子:
name = 'John'
age = 30.5
print('My name is {} and I am {} years old.'.format(name, age))
05-字符串操作实战
最后,我们来学习一个字符串操作的实战案例。该案例需要从一个文件中读取文本,查找其中的重复行,并输出重复的行及其数量。
以下是该案例的具体步骤:
01-打开文件
使用open()函数打开文件。语法格式如下:
`open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)`
其中,`file`表示要打开的文件名,`mode`表示打开的模式,缺省为'r'。读取模式下可以用read()命令,写入模式下可以用write()命令。`buffering`表示设置缓冲区的大小,如果该参数为0表示无缓冲,如果该参数为1表示有缓冲。`encoding`表示该文件的编码格式,缺省为None,表示使用系统默认编码。`errors`表示处理编码错误的方式,缺省为None,表示使用默认方式。`newline`表示该文件所使用的换行符,如果缺省,则根据平台不同使用不同的换行符。`closefd`和`opener`这两个参数主要是和Unix平台兼容,可以忽略掉。
下面是使用open()函数打开文件的例子:
file = open('text-file.txt')
print(file.read())
file.close()
02-查找重复行
使用Python中的集合(set)来查找重复行。集合是无序的不重复元素集,可以和其他序列(列表、元组等)进行相互转换。例如,将一个列表转换为集合可以使用set()函数,反之可以使用list()函数。
以下是一个使用集合查找重复行的例子:
file = open('text-file.txt')
lines = file.readlines()
file.close()
duplicates = set()
unique_lines = set()
for line in lines:
if line in unique_lines:
duplicates.add(line)
else:
unique_lines.add(line)
print('Duplicate lines found: {}'.format(len(duplicates)))
for line in duplicates:
print('Line:', line)
总结
字符串是Python中的一种重要的数据类型,在Python中字符串是不可变的序列,也是一种常用的容器类型。Python中,字符串操作的方法非常多,例如字符串连接、查找子串、字符串替换、字符串格式化输出等等。使用字符串操作的方法可以让我们更加高效地开发Python应用程序。