概述
目录
- 字符串方法
- 常用字符串方法表
- 常用字符串方法使用例子
- 切片
- 浅拷贝/深拷贝
- 浅拷贝
- 深拷贝
- 非空即真,非0即真
- 操作文件
- 打开关闭方法
- 常用模式
- 读文件的三种方法
- with... as...语句
- os模块
字符串方法
常用字符串方法表
方法 | 描述 |
---|---|
count() | 返回字符串出现的次数 |
index() | 找字符串第一次出现的下标,找不到会报错 |
find() | 检测 str 是否包含在字符串中,找不到返回-1 |
strip() | 去首尾空格和换行符,也可以用于去掉指定字符 |
rstrip() | 去右边空格 |
lstrip() | 去左边空格 |
replace() | 替换指定字符,默认全部替换,也可以指定次数 |
format() | 格式化字符串,可以接受不限个参数,位置可以不按顺序 |
format_map() | 用于字典形式的格式化字符串 |
zfill() | 返回指定长度的字符串,原字符串长度不够往前面补充0 |
center() | 返回一个指定的长度的字符串,长度不够往两边自动补充,可设定补充字符,默认为空格 |
title() | 把空格隔开的英文首字母变成大写 |
capitalize() | 将字符串的第一个字符转换为大写 |
upper() | 转换字符串中的小写字母为大写 |
lower() | 转换字符串中所有大写字符为小写 |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
isalnum() | 检测字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isupper() | 检测字符串是否为纯大写字母,是返回True,否则返回 False |
islower() | 检测字符串是否为纯小写字母,是返回True,否则返回 False |
isdigit() | 检测字符串是否为纯小写数字,是返回True,否则返回 False |
startswith() | 检测 是否以某某开头,是返回True,否则返回 False |
endswith() | 检测 是否以某某结尾,是返回True,否则返回 False |
split() | 分割字符串,可以设定指定字符进行分割,默认以空格和换行符分割 |
join() | 以指定字符连接字符串 |
常用字符串方法使用例子
1.count()方法语法:
str.count(sub, start= 0,end=len(string))
sub – 搜索的子字符串
start – 字符串开始搜索的位置,默认为第一个字符,第一个字符索引值为0
end – 字符串中结束搜索的位置,字符中第一个字符的索引为 0,默认为字符串的最后一个位置
s = 'abcdefghijklmnopqrstuvwxyz'
print(s.count('a'))
输出结果为:
1
2.index()方法语法:
str.index(str, beg=0, end=len(string))
str – 指定检索的字符串
beg – 开始索引,默认为0
end – 结束索引,默认为字符串的长度
s = 'abcdefghijklmnopqrstuvwxyzsss'
print(s.index('s'))
print(s.index('s', 0,10)) #找不到会报错
输出结果为:
18
ValueError: substring not found
3.find()方法语法:
str.find(str, beg=0, end=len(string))
str – 指定检索的字符串
beg – 开始索引,默认为0
end – 结束索引,默认为字符串的长度
s = 'abcdefghijklmnopqrstuvwxyz'
print(s.find('s'))
print(s.find('s', 0,10))
# 找字符串的下标,找不到返回-1
输出结果为:
18
-1
4.strip()方法语法:
str.strip([chars])
chars – 删除字符串头尾指定的字符序列
s = '***abcdefghijklmnopqrstuvwxyz
'
S = '
***abcdefghijklmnopqrstuvwxyz'
print(s.strip())
print(s.strip('*'))
# 也可以用于删除指定字符
print(S.strip('*'))
# 无法删除字符串中间的字符
输出结果为:
***abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
***abcdefghijklmnopqrstuvwxyz
5.rstrip()方法语法:
str.rstrip([chars])
chars – 指定删除的字符,默认为空格
s = '
abcdefghijklmnopqrstuvwxyz
'
输出结果为:
abcdefghijklmnopqrstuvwxyz
6.lstrip()方法语法:
str.rstrip([chars])
chars – 指定删除的字符,默认为空格
s = '
abcdefghijklmnopqrstuvwxyz
'
输出结果为:
abcdefghijklmnopqrstuvwxyz
7.replace()方法语法:
str.replace(old, new[, max])
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串
max – 可选字符串, 替换不超过 max 次
s = 'abcdefghijklmnopqrstuvwxyzsyst'
print(s.replace('s','S'))
print(s.replace('s','S',1)) #可以指定替换次数
输出结果为:
abcdefghijklmnopqrStuvwxyzSySt
abcdefghijklmnopqrStuvwxyzsyst
8.format()方法语法:
‘{}’.format(‘str’)
str – 参数值
{} – 需要格式化的参数
print('{} {}'.format('hello', 'world'))
# 不设置指定位置,按默认顺序
print('{0} {1}'.format('hello', 'world'))
# 设置指定位置
print('{1} {0} {1}'.format('hello', 'world'))
# 设置指定位置
print('{name1} {name2}'.format(name1 = 'hello', name2 = 'world'))
# 设置参数
输出结果为:
hello world
hello world
world hello world
hello world
9.format_map()方法语法:
‘{key}’.format({‘key’:‘value’})
{key} – 字典中的键名
{‘key’:‘value’} – 字典
print('{key1} {key2}'.format_map({'key1':'hello', 'key2':'world'}))
print('{key2} {key1} {key2}'.format_map({'key1':'hello', 'key2':'world'}))
# 设置指定位置
输出结果为:
hello world
world hello world
10.zfill()方法语法:
str.zfill(width)
width – 指定字符串的长度。原字符串右对齐,前面填充0
s = 'abcd'
print(s.zfill(10))
输出结果为:
000000abcd
11.center()方法语法:
str.center(width[, fillchar])
width – 字符串的总宽度。
fillchar – 填充字符。
s = 'abcd'
print(s.center(20, '*'))
输出结果为:
********abcd********
12.title()方法语法:
str.title()
参数无
s = 'holle world'
d = 'holle_world'
print(s.title())
print(d.title())
输出结果为:
Holle World
Holle_World
13.capitalize()方法语法:
str.capitalize()
参数无
s = 'holle world'
d = 'holle_world'
print(s.capitalize())
print(d.capitalize())
输出结果为:
Holle world
Holle_world
13.upper()方法语法:
str.upper()
参数无
s = 'holle world'
d = 'holle_world'
print(s.capitalize())
print(d.capitalize())
输出结果为:
Holle world
Holle_world
14.lower()方法语法:
str.lower()
参数无
s = 'HOLLE world'
d = 'HOLLE_world'
print(s.lower())
print(d.lower())
输出结果为:
holle world
holle_world
15.swapcase()方法语法:
str.swapcase()
参数无
s = 'HOLLE world'
d = 'HOLLE_world'
print(s.swapcase())
print(d.swapcase())
输出结果为:
holle WORLD
holle_WORLD
16.isalnum()方法语法:
str.isalnum()
参数无
S = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
s = 'abcdefghijklmnopqrstuvwxyz'
n = '0123456789'
s1 = 'ABCDEFGabcdefg123456'
s2 = 'ABCDEFGabcdefg123456+-*/'
print(S.isalnum())
print(s.isalnum())
print(n.isalnum())
print(s1.isalnum())
print(s2.isalnum())
输出结果为:
True
True
True
True
False
17.isupper()方法语法:
str.isupper()
参数无
S = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
s = 'abcdefghijklmnopqrstuvwxyzsyst'
print(S.isupper())
print(s.isdigit())
输出结果为:
True
False
18.islower()方法语法:
str.islower()
参数无
S = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
s = 'abcdefghijklmnopqrstuvwxyzsyst'
print(S.isupper())
print(s.isdigit())
输出结果为:
False
True
19.isdigit()方法语法:
str.isdigit()
参数无
S = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
s = 'abcdefghijklmnopqrstuvwxyzsyst'
n = '0123456789'
print(S.isupper())
print(s.isdigit())
输出结果为:
False
False
True
20.startswith()方法语法:
str.startswith(str, beg=0,end=len(string))
str – 检测的字符串
strbeg – 可选参数用于设置字符串检测的起始位置
strend – 可选参数用于设置字符串检测的结束位置
s = 'holle world'
print(s.startswith('holle'))
print(s.startswith('world'))
输出结果为:
True
False
20.endswith()方法语法:
str.endswith(suffix[, start[, end]])
suffix – 该参数可以是一个字符串或者是一个元素
start – 字符串中的开始位置,默认是 0
end – 字符中结束位置,默认是字符串/列表等的长度
s = 'holle world'
print(s.endswith('holle'))
print(s.endswith('world'))
输出结果为:
False
True
20.split() 方法语法:
str.split(str="", num=string.count(str))
str – 分隔符,默认为所有的空字符,包括空格、换行(n)、制表符(t)等。
num – 分割次数。如果参数 num 有指定值,则分隔 num+1 个子字符串,默认为 -1, 即分隔所有。
s = 'abcn def,ghi,jkl'
print(s.split())
# 默认以空格和换行符
print(s.split(','))
# 默认全部匹配
print(s.split(',', 1))
# 可以指定分割次数
print(s.split('5'))
# 输入不存在的字符,会把字符串直接存为list
输出结果为:
['abc', 'def,ghi,jkl']
['abcn def', 'ghi', 'jkl']
['abcn def', 'ghi,jkl']
['abcn def,ghi,jkl']
21.join()方法语法:
str.join(sequence)
sequence – 要连接的元素序列。
l = ['holle', 'world', 'python']
l_str = ','
print(l_str.join(l))
输出结果为:
holle,world,python
切片
1.切片是list范围取值的一种方式
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
print(l[0])
输出结果为:
a
2.切片的时候是顾头不顾尾的,比如取前3位元数,取的是下标为0,1,2的3位元素
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
print(l[0:3])
输出结果为:
['a', 'b', 'c']
3.可以添加步长来规定取值范围
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
print(l[0:10:2])
输出结果为:
['a', 'c', 'e', 'g', 'i']
4.步长如果是负数的话,那么取值的时候就从右往左开始取,同时开始和结束下标也要写成负数
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
print(l[-1:-8:-2])
输出结果为:
['i', 'g', 'e', 'c']
浅拷贝/深拷贝
浅拷贝
浅拷贝一个变量后,改变了这个变量,另外一个也会改变
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
l2 = l
l.append('j')
print('l:', l)
print('l2:', l2)
输出结果为:
l: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
l2: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
深拷贝
深拷贝一个变量后,改变了这个变量,另外一个则不会改变
import copy # 深拷贝要引入copy模块
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
l2 = copy.deepcopy(l)
l.append('j')
print('l:', l)
print('l2:', l2)
输出结果为:
l: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
l2: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
非空即真,非0即真
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false
- 字符串类型,空字符串表示False,其他为True
- 整数和浮点数,0表示False,其他为True
- 序列类型(包括列表,元组,字典,集合等),空表示False,非空表示True
- 布尔类型,False为假,True为真
- None永远表示False
例子如下:
username = input('username:')
if username.strip():
# 去掉空格之后输入的username不为空为True,走if下的代码,否则执行else
print('你输入的username不为空')
else:
print('你输入的username为空')
print(not username.strip()) # 可以用not取反值,即为空则为True,不为空则为False
if not username.strip():
# 去掉空格之后输入的username为空为True,走if下的代码,否则执行else
print('你输入的username为空')
else:
print('你输入的username不为空')
输出结果为:
username:
你输入的username为空
True
你输入的username为空
操作文件
打开关闭方法
- Python打开文件使用open()方法,一般基础语法为:
open(file, mode=‘r’, encoding=)
file: 必需,文件路径(相对或者绝对路径),文件在当前代码文件路径下可以直接写文件名,使用绝对路径时一般加r’,表示取原字符
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8 - 打开文件后一定要关闭文件,用close() 方法。
常用模式
一般的常用的文件打开模式为r, r+, a, a+, w, w+。
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头,文件打开模式不写默认为r模式 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
读文件的三种方法
- read()
用于从文件读取指定的字节数
语法如下:
fileObject.read(size)
size – 从文件中读取的字节数,默认或者指定负数读所有
f = open('a.txt', 'r', encoding='utf-8')
print(f.read())
# 三个print不能同时打印
print(f.read(5))
print(f.read(-5))
f.close()
输出结果为:
zhangsan
lisi
wangwu
zhaoliu
zhang
zhangsan
lisi
wangwu
zhaoliu
- readline()
用于从文件读取整行,包括 “n” 字符。
语法如下:
fileObject.readline(size)
size – 从文件中读取的字节数,默认或者指定负数读整行
f = open('a.txt', 'r',encoding='utf-8')
print(f.readline())
print(f.read(5))
print(f.read(-5))
输出结果为:
zhangsan
zhang
zhangsan
- readlines()
用于读取所有行(直到结束符 EOF)并以列表形式返回,如有换行,会把换行符写入字符串中
语法如下:
fileObject.readlines( )
f = open('a.txt', 'r', encoding='utf-8')
print(f.readlines())
f.close()
输出结果为:
['zhangsann', 'lisin', 'wangwun', 'zhaoliu']
用readlines()读取出来的数据带有换行符,但是又不想要的话可以用for循环处理下,例如:
list = []
# 先建一个空的list
f = open('a.txt', 'r', encoding='utf-8')
# 循环读取每行数据去掉换行符然后存到之前创建的list里面去
for result in f.readlines():
result = result.strip()
list.append(result)
print(list)
f.close()
输出结果为:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
或者先用readlines()读取出来存为列表再用其他的方法去消除列表中的换行符
with… as…语句
用open打开文件后忘了关闭文件导致系统资源的浪费,又或者程序异常close()没有执行,导致后面的某些文件操作无法执行,我们可以用with… as…语句来解决这种问题,用with… as…语句的好处就是到达语句末尾时会自动关闭文件,即使出现异常。写法如下:
with open('test.txt',encoding='utf-8') as f:
for line in f:
print(line)
line = line.strip()
# 去除换行符
if line:
print(line)
os模块
Python的os模块封装了操作系统的目录和文件操作,所以很多时候我们可以通过引入os模块来完成文件操作
os模块的部分常用方法:
方法 | 描述 |
---|---|
os.name | 输出字符串指示正在使用的平台,如果是window 则用’nt’表示,对于Linux/Unix用户,它是’posix’ |
os.getcwd() | 返回当前工作目录 |
os.listdir(path) | 返回指定的文件夹包含的文件或文件夹的名字的列表 |
os.mkdir(path) | 创建path指定的文件夹,只能创建一个单层文件,而不能嵌套创建,若文件夹存在则会抛出异常 |
os.makedirs(path) | 创建多层目录 ,可以嵌套创建 |
os.move(file_name) | 删除指定文件 |
os.remove(path) | 删除指定路径的文件,如果指定的路径是一个目录,将抛出OSError |
os.rename(src, dst) | 文件src重命名为dst,如果dst是一个存在的目录, 将抛出OSError |
比如我现在有个文件,想把文件内的所有小写字母替换成大写,如果用file的方法就会复杂很多,这个时候使用os的方法就会方便些,例如:
import os
# 打开a文件,再以只写的方式新建一个新文件
with open('a.txt') as fr,open('a_new.txt','w') as fw:
for line in fr:
line = line.strip()
if line:
# 把读取到的内容替换成大写再写入新文件中
line = line.upper()
fw.write(line+'n')
# 用os模块的方法删除原文件再把新文件重命名为a
os.remove('a.txt')
os.rename('a_new.txt','a.txt')
最后
以上就是悲凉大山为你收集整理的Python学习二字符串方法切片浅拷贝/深拷贝非空即真,非0即真操作文件的全部内容,希望文章能够帮你解决Python学习二字符串方法切片浅拷贝/深拷贝非空即真,非0即真操作文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复