📅  最后修改于: 2020-07-30 05:24:46             🧑  作者: Mango
在编码或提高编程技巧时,您肯定一定遇到过许多情况,在这些情况下,您希望.split()
在Python中使用它们,而不是只拆分一个字符,而是一次拆分多个字符。考虑以下示例:
"mangodoc, is an-awesome! website"
.split()
在上面使用会导致
['mangodoc, ', 'is', 'an-awesome!', 'website']
而预期的结果应该是
['mangodoc', 'is', 'an', 'awesome', 'website']
在本文中,我们将探讨实现相同目标的一些方法。
这是一次拆分多个字符的最有效且最常用的方法。为此,它使用了regex(正则表达式)。
# Python3代码演示使用re.split()在字符串中拆分运算符的工作方式
import re
# 初始化字符串
data = "mangodoc, is_an-awesome ! website"
# 打印原始字符串
print("原始字符串是 : " + data)
# 使用re.split()在字符串中分割字符
res = re.split(', |_|-|!', data)
# 打印结果
print("执行拆分功能后的列表 : " + str(res))
输出:
原始字符串是 : mangodoc, is_an-awesome ! website
执行拆分功能后的列表 : [‘mangodoc’, ‘is’, ‘an’, ‘awesome ‘, ‘ website’]
该行re.split(', |_|-|!', data)
告诉Python来分割可变数据上的字符:,或_或–或!。符号“ | “表示或。
正则表达式中有一些符号被视为特殊符号并具有不同的功能。如果要分割这样的符号,则需要使用“ \ “(反斜杠)对其进行转义。使用特殊字符之前需要转义的列表:
. \ + * ? [ ^ ] $ ( ) { } = ! | : -
例如:
import re
newData = "mangodoc, is_an-awesome ! app + too"
# 要分割“ +",请使用反斜杠
print(re.split(', |_|-|!|\+', newData))
输出:
['mangodoc', ' is', 'an', 'awesome', ' app', 'too']
这是一种比较神秘的形式,但可以节省时间。它还像上面一样使用正则表达式,但是.split()
它使用而不是方法来代替.findall()
。此方法查找所有匹配的实例,并在列表中返回每个实例。当您不知道要分割的确切字符时,最好使用这种分割方式。
# Python3代码演示使用re.findall()在字符串中拆分运算符的工作方式
import re
# 初始化字符串
data = "This, is - another : example?!"
# 打印原始字符串
print("原始字符串是 : " + data)
# 使用re.findall()拆分字符串中的字符
res = re.findall(r"[\w']+", data)
# 打印结果
print("执行拆分功能后的列表 : " + str(res))
输出:
原始字符串是 : This, is – another : example?!
执行拆分功能后的列表 : [‘This’, ‘is’, ‘another’, ‘example’]
此处的关键字[\w']+
表示它将找到一个或多个字母或下划线(_)的所有实例,并将它们返回到列表中。
注意: [\w']+
下划线(_)不会同时搜索字母和下划线。
例如:
import re
testData = "This, is - underscored _ example?!"
print(re.findall(r"[\w']+", testData))
输出:
['This', 'is', 'underscored', '_', 'example']
这是进行拆分的新手方式。它不使用正则表达式,效率低下,但仍然值得一试。如果知道要分割的字符,只需用空格替换它们,然后使用.split()
:
# Python代码演示
# 分割字符串
# 初始字符串
data = "Let's_try, this now"
# 打印原始字符串
print("原始字符串是 : " + data)
# 使用replace()和split()在字符串中分割字符
res = data.replace('_', ' ').replace(', ', ' ').split()
# 打印结果
print("执行拆分功能后的列表 : " + str(res))
输出:
原始字符串是 : Let’s_try, this now
执行拆分功能后的列表 : [“Let’s", ‘try’, ‘this’, ‘now’]
正则表达式关于字符描述的表格:
速记字符类 | 代表 |
---|---|
\ d | 0到9之间的任何数字 |
\ D | 不是0到9之间的数字的任何字符 |
\ w | 任何字母,数字或下划线字符 |
\ W | 不是字母,数字或下划线字符的任何字符 |
\ s | 任何空格,制表符或换行符 |
\ S | 不是空格,制表符或换行符的任何字符 |