如何使用Python在多个分隔符上拆分字符串?
更多Python相关文章,请阅读:Python 教程
问题
您需要将字符串拆分为字段,但是分隔符在字符串中并不一致。
解决方案
有多种方法可以在Python中拆分字符串或多个分隔符的字符串。最常见和简单的方法是使用split()方法,然而它只能处理简单的情况。
re.split()在处理复杂字符串场景方面比正常的'split()`方法更加灵活。
使用re.split()您可以指定分隔符的多个模式。正如在解决方案中所示,分隔符是’-‘或空格或逗号,后面跟着值。正则表达式文档可以在这里找到。
每当找到该模式时,整个匹配成为位于匹配项两侧的字段之间的分隔符。
提取仅在分隔符之间的文本(无分隔符)。
示例
import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
""""
#-----------------------------------------------------------------------------
# Scenario 1 - Output the players
# Input - String with multiple delimiters ( - , white space)
# Code - Specify the delimters in []
#-----------------------------------------------------------------------------
"""
players = re.split(r'[-,\s]\s*',tennis_greats)
输出
print(f" 输出为 - {players}")
输出为 –
['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']
提取分隔符和分隔符之间的文本
示例
import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
""""
#-----------------------------------------------------------------------------
# Scenario 2 - Output the players and the delimiters
# Input - String with multiple delimiters ( - , white space)
# Code - Specify the delimters between pipe (|)
#-----------------------------------------------------------------------------
"""
players = re.split(r'(-|,|\s)\s*',tennis_greats)
输出
print(f" 输出为 - {players}")
输出为 –
['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']
极客教程