Python|从字符串中拆分多个字符
在编码或即兴编程技能时,您肯定遇到过许多希望在Python中使用.split()
的场景,而不是只拆分一个字符,而是一次拆分多个字符。举个例子:
"GeeksforGeeks, is an-awesome! website"
在上面使用.split()
将导致
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
而期望的结果应该是
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
在本文中,我们将探讨一些可以实现相同目标的方法。
使用 re.split()
这是一次分割多个字符的最有效和最常用的方法。为此,它使用了正则表达式(正则表达式)。
# Python3 code to demonstrate working of
# Splitting operators in String
# Using re.split()
import re
# initializing string
data = "GeeksforGeeks, is_an-awesome ! website"
# printing original string
print("The original string is : " + data)
# Using re.split()
# Splitting characters in String
res = re.split(', |_|-|!', data)
# printing result
print("The list after performing split functionality : " + str(res))
输出:
The original string is : GeeksforGeeks, is_an-awesome ! website
The list after performing split functionality : [‘GeeksforGeeks’, ‘is’, ‘an’, ‘awesome ‘, ‘ website’]
re.split(', |_|-|!', data)
行告诉Python将变量数据拆分为字符:或_或–或! .符号“ | ”代表或。
正则表达式中有一些符号被视为特殊符号并具有不同的功能。如果您希望拆分这样的符号,您需要使用“ \ ”(反斜杠)对其进行转义。使用前需要转义的特殊字符列表:
. \ + * ? [ ^ ] $ ( ) { } = ! | : -
例如:
import re
newData = "GeeksforGeeks, is_an-awesome ! app + too"
# To split "+" use backslash
print(re.split(', |_|-|!|\+', newData))
输出:
['GeeksforGeeks', ' is', 'an', 'awesome', ' app', 'too']
注意:要了解有关正则表达式的更多信息,请单击此处。
使用 re.findall()
这是一种更神秘的形式,但可以节省时间。它也像上面一样使用正则表达式,但不是.split()
方法,而是使用称为.findall()
的方法。此方法查找所有匹配的实例并在列表中返回它们中的每一个。当您不知道要拆分的确切字符时,最好使用这种拆分方式。
# Python3 code to demonstrate working of
# Splitting operators in String
# Using re.findall()
import re
# initializing string
data = "This, is - another : example?!"
# printing original string
print("The original string is : " + data)
# Using re.findall()
# Splitting characters in String
res = re.findall(r"[\w']+", data)
# printing result
print("The list after performing split functionality : " + str(res))
输出:
The original string is : This, is – another : example?!
The list after performing split functionality : [‘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 code to demonstrate
# to split strings
# Initial string
data = "Let's_try, this now"
# printing original string
print("The original string is : " + data)
# Using replace() and split()
# Splitting characters in String
res = data.replace('_', ' ').replace(', ', ' ').split()
# Printing result
print("The list after performing split functionality : " + str(res))
输出:
The original string is : Let’s_try, this now
The list after performing split functionality : [“Let’s”, ‘try’, ‘this’, ‘now’]
字符类
关于字符描述的正则表达式备忘单
Shorthand character class | Represents |
---|---|
\d | Any numeric digit from 0 to 9 |
\D | Any character that is not a numeric digit from 0 to 9 |
\w | Any letter, numeric digit, or the underscore character |
\W | Any character that is not a letter, numeric digit, or the underscore character |
\s | Any space, tab, or newline character |
\S | Any character that is not a space, tab, or newline |