在某些字符后分割字符串?

时间:2018-11-08 23:24:56

标签: python python-3.x

我将得到一个字符串,并且每当它具有“ |”,“ /”,“”时,都需要将其拆分。或“ _”

如何快速执行此操作?我知道如何使用命令拆分,但是有什么办法可以给它提供多个拆分条件?例如,如果输入为

Hello test|multiple|36.strings/just36/testing

我希望输出给出:

"['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']"

2 个答案:

答案 0 :(得分:3)

使用正则表达式和正则表达式模块:

>>> import re
>>> s='You/can_split|multiple'
>>> re.split(r'[/_|.]', s)
['You', 'can', 'split', 'multiple']

在这种情况下,[/_|.]将拆分为这些字符中的任何一个。

或者,您可以使用列表推导来插入单个(也许是多个字符)定界符,然后在该定界符上进行分割:

>>> ''.join(['-><-' if c in '/_|.' else c for c in s]).split('-><-')
['You', 'can', 'split', 'multiple']

带有添加的示例:

>>> s2="Hello test|multiple|36.strings/just36/testing"

方法1:

>>> re.split(r'[/_|.]', s2)
['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']

方法2:

>>> ''.join(['-><-' if c in '/_|.' else c for c in s2]).split('-><-')
['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']

答案 1 :(得分:0)

使用groupby

from itertools import groupby

s = 'You/can_split|multiple'

separators = set('/_|.')
result = [''.join(group) for k, group in groupby(s, key=lambda x: x not in separators) if k]
print(result)

输出

['You', 'can', 'split', 'multiple']