> 文档中心 > 这些实用的列表,字符串操作你知道吗?

这些实用的列表,字符串操作你知道吗?

☀ 前言:对于python的基础,列表字符串都是我们经常会使用到的,下面介绍一些使用小技巧。

目录

技巧1:字符串转列表

一、在split()没有参数的情况下

二、在split()有参数的情况下 

参数str""

参数num 

参数[n] 

技巧2:字符串转数字

技巧3:列表转字符串


技巧1:字符串转列表

在一些情况下我们需要将字符串转化成列表,比如在获取人名数据是得到一个字符串”张三,李四王五,但是我们想将人名单独储存起来,如[ '张三','李四','王五']

那么这时就需要将字符串转换成列表。

🌟怎么转换呢?

我们可以使用split()函数

语法为split(str"", num=sting.count(str))[n]

  • 其中str""参数为分隔的字符条件,在""中填入分隔条件。若不写入该参数,则默认以空格,空格符(\t)回车符(\n)等作为分隔得条件
  • num参数为分隔次数,在str""分隔条件的基础上,进行num次分割
  • [n]:表示取第n个分片

下面我们一一介绍

🌈一、在split()没有参数的情况下

在split()没有参数的情况下split函数将会默认以空格,空格符(\t)回车符(\n)等作为分隔得条件

string1 = '张三 李四 王五'string2 = '张三\t李四\t王五'string3 = '张三\n李四\n王五'print(string1.split())print(string2.split())print(string3.split())# -------------------# 输出['张三', '李四', '王五']['张三', '李四', '王五']['张三', '李四', '王五']

🌈二、在split()有参数的情况下 

✨参数str""

在split()有参数的情况下 我们可以给split()添加分隔条件的参数

split(“”)在“”内填入分隔条件(如空格,逗号,句号,分号等)

✏ 易错演示

string1 = '张三 李四 王五'string2 = '张三,李四,王五'string3 = '张三。李四。王五'string4 = '张三、李四、王五'print(string1.split(" "))print(string2.split(","))print(string3.split("."))print(string4.split("、"))# --------------------# 输出['张三', '李四', '王五']['张三,李四,王五']['张三。李四。王五']['张三', '李四', '王五']

 🌟这除了string1,string2和string3为什么没有得到正确的结果呢?

这是因为string2和string3中split(”“)的参数写错了,中文的字符和英文的字符是不一样的,我们需要观察字符串的分隔符号是中文还是英文。

✏正确演示 

string1 = '张三 李四 王五'string2 = '张三,李四,王五'string3 = '张三。李四。王五'string4 = '张三、李四、王五'print(string1.split(" "))print(string2.split(","))print(string3.split("。"))print(string4.split("、"))# ------------------------# 输出['张三', '李四', '王五']['张三', '李四', '王五']['张三', '李四', '王五']['张三', '李四', '王五']

✨参数num 

num参数为分隔次数,在str""分隔条件的基础上,进行num次分割

string1 = '张三 李四 王五'string2 = '张三,李四,王五'string3 = '张三。李四。王五'string4 = '张三、李四、王五'print(string1.split(" ", 1))print(string2.split(",", 2))print(string3.split("。", 3))print(string4.split("、", 4))# ------------------------# 输出['张三', '李四 王五']['张三', '李四', '王五']['张三', '李四', '王五']['张三', '李四', '王五']

在这里 string1.split(" ", 1)),string2.split(",", 2),分别进行1次和2次分割

string3.split("。", 3),string4.split("、", 4),分别进行3次和4次分割

但是分隔结果都和string2.split(",", 2)一样,这是为什么?

这是因为在分隔条件下原字符最多能进行2次分隔,当分隔数大于最大分割数时,得到最大分隔数的结果

✨参数[n] 

[n]:表示取第n个分片

string1 = '张三 李四 王五'string2 = '张三,李四,王五'string3 = '张三。李四。王五'string4 = '张三、李四、王五'print(string1.split(" ", 1)[0])print(string2.split(",", 2)[1])print(string3.split("。", 3)[2])print(string4.split("、", 4)[-1])# ------------------------------# 输出张三李四王五王五

这是技巧1字符串转列表,既然转换成了列表我们就可以使用列表的索引规则,提取其中的元素

当然,如果我们不想要 列表中名字含有的引号时,我们也可以将其去掉

代码如下

lst = ['张三', '李四', '王五']for item in lst:    item.replace("'", "")print(lst)# ------------------------# 输出['张三', '李四', '王五']

这里使用replace()函数进行替换处理

简单语法为replace(“要替换的字符”, “替换成的字符”)

虽然输出看似没有任何变化,但是,原本因为含有单引号引起的报错将会得到解决

对于英文字符也是如此

值得注意的是可以使用list(str)直接将字符串转换成列表,不过分隔的条件是单个字符,所谓的单个字符包括,空格、空格符、换行符

string1 = '张三 李四 王五'string2 = '张三\t李四\t王五'string3 = '张三\n李四\n王五'print(list(string1))print(list(string2))print(list(string3))# -------------------# 输出['张', '三', ' ', '李', '四', ' ', '王', '五']['张', '三', '\t', '李', '四', '\t', '王', '五']['张', '三', '\n', '李', '四', '\n', '王', '五']

技巧2:字符串转数字

字符串转化为数字前提是该字符串中只含有数字,如果出现数字之外的字符就会报错。

可以使用int()将只包含数字的字符串转换成数值型。

strs = '123'print(type(strs))strs = int(strs)print(type(strs))# ---------------# 输出

 type()函数可以打印出变量的类型,可以看到原来strs的类型为字符串,在经过int()函数转换后其类型变成了数值型

技巧3:列表转字符串

 🌟什么时候会遇到这一情况?

举个例子,在之前我使用爬虫爬取图片并将其自动储存进自动创建的文件夹时总是报错。报错原因就在于我创建文件夹时使用了非法的文件名。因为我所使用的文件名都是图片的标题,这难免有一些非法字符。如,单引号,双一号,书名号,问号,冒号等字符。这些字符是不能出现在文件名中的。所以我就写了一个去除所有符号的函数最终解决了这一问题。其中的操作就包含列表转字符串。

详见:NotADirectoryError: [WinError 267] 目录名称无效和OSError: [Errno 22] Invalid argument:解决办法

下面我们使用join()函数将列表转换成字符串 

lst = ['张三', '李四', '王五']# 第一种写法string1 = ''.join(lst)print(string1)print(type(string1))# 第二种写法string2 = ''.join(i for i in lst)print(string2)print(type(string2))# --------------------------------# 输出张三李四王五张三李四王五

join前面的双引号""表示以什么方式链接这个字符串

可以在""填入想要使用的连接符

lst = ['张三', '李四', '王五']# 以”-“连接string1 = '-'.join(lst)print(string1)print(type(string1))# 以”:“连接string2 = ':'.join(i for i in lst)print(string2)print(type(string2))# --------------------------------# 输出张三-李四-王五张三:李四:王五

我们还可以使用str()函数直接将列表变为字符串

lst = ['张三', '李四', '王五']li = str(lst)print(li)print(type(li))# --------------------------------# 输出['张三', '李四', '王五']

可以看到,虽然转换后的lst好像没有发生任何变化,但是li的类型已经变成了str字符串类型。相当于 ' [ '张三', '李四', '王五'] '