Python-将字符串拆分为字符,同时排除某些子字符串

时间:2019-08-10 13:53:30

标签: python arrays string split substring

我正在尝试将一个字符串拆分成一个列表,同时排除某些子字符串。

例如:

>>> sentences = '<s>I like dogs.</s><s>It\'s Monday today.</s>'
>>> substring1 = '<s>'
>>> substring2 = '</s>'
>>> print(split_string(sentences))
['<s>', 'I', ' ', 'l', 'i', 'k', 'e', ' ', 'd', 'o', 'g', 's', 
'.', '</s>', '<s>', 'I', 't', "'", 's', ' ', 'M', 'o', 'n', 'd',
'a', 'y', ' ', 't', 'o', 'd', 'a', 'y', '.', '</s>']

如您所见,除了列出的子字符串外,该字符串被分成字符。如何在Python中执行此操作?

3 个答案:

答案 0 :(得分:3)

您可以使用re.split

import re
s = '<s>I like dogs.</s><s>It\'s Monday today.</s>'
result = [i for b in re.split('\<s\>|\</s\>', s) for i in ['<s>', *b, '</s>'] if b]

输出:

['<s>', 'I', ' ', 'l', 'i', 'k', 'e', ' ', 'd', 'o', 'g', 's', '.', '</s>', '<s>', 'I', 't', "'", 's', ' ', 'M', 'o', 'n', 'd', 'a', 'y', ' ', 't', 'o', 'd', 'a', 'y', '.', '</s>']

答案 1 :(得分:3)

您可以为此使用re.findall。 :)

import re
sentences = '<s>I like dogs.</s><s>It\'s Monday today.</s>'
print(re.findall(r'<\/?s>|.',sentences))

输出

['<s>', 'I', ' ', 'l', 'i', 'k', 'e', ' ', 'd', 'o', 'g', 's', '.', '</s>', '<s>', 'I', 't', "'", 's', ' ', 'M', 'o', 'n', 'd', 'a', 'y', ' ', 't', 'o', 'd', 'a', 'y', '.', '</s>']

答案 2 :(得分:1)

您是否要从上述输出中排除<s></s>子字符串?

如果是这样:

>>> sentences = '<s>I like dogs.</s><s>It\'s Monday today</s>'
>>> substrings = ['<s>','<\s>']
>>> [character for character in split(sentences) if character not in substrings]

将给出预期的输出。