我将得到一个字符串,并且每当它具有“ |”,“ /”,“”时,都需要将其拆分。或“ _”
如何快速执行此操作?我知道如何使用命令拆分,但是有什么办法可以给它提供多个拆分条件?例如,如果输入为
Hello test|multiple|36.strings/just36/testing
我希望输出给出:
"['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']"
答案 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']