📜  Python|从字符串中拆分多个字符

📅  最后修改于: 2022-05-13 01:54:20.765000             🧑  作者: Mango

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)) 

输出:

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)) 

输出:

这里的关键字[\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)) 

输出:

字符类

关于字符描述的正则表达式备忘单

Shorthand character classRepresents
\dAny numeric digit from 0 to 9
\DAny character that is not a numeric digit from 0 to 9
\wAny letter, numeric digit, or the underscore character
\WAny character that is not a letter, numeric digit, or the underscore character
\sAny space, tab, or newline character
\SAny character that is not a space, tab, or newline