我是靠谱客的博主 悲凉大山,最近开发中收集的这篇文章主要介绍Python学习二字符串方法切片浅拷贝/深拷贝非空即真,非0即真操作文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 字符串方法
    • 常用字符串方法表
    • 常用字符串方法使用例子
  • 切片
  • 浅拷贝/深拷贝
    • 浅拷贝
    • 深拷贝
  • 非空即真,非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

  1. 字符串类型,空字符串表示False,其他为True
  2. 整数和浮点数,0表示False,其他为True
  3. 序列类型(包括列表,元组,字典,集合等),空表示False,非空表示True
  4. 布尔类型,False为假,True为真
  5. 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为空

操作文件

打开关闭方法

  1. Python打开文件使用open()方法,一般基础语法为:
    open(file, mode=‘r’, encoding=)
    file: 必需,文件路径(相对或者绝对路径),文件在当前代码文件路径下可以直接写文件名,使用绝对路径时一般加r’,表示取原字符
    mode: 可选,文件打开模式
    buffering: 设置缓冲
    encoding: 一般使用utf8
  2. 打开文件后一定要关闭文件,用close() 方法。

常用模式

一般的常用的文件打开模式为r, r+, a, a+, w, w+。

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头,文件打开模式不写默认为r模式
r+打开一个文件用于读写。文件指针将会放在文件的开头
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件

读文件的三种方法

  1. 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
  1. 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
  1. 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即真操作文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部