[英]Python - Split string into characters while excluding a certain 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中執行此操作?
您可以使用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>']
您可以為此使用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>']
您是否要從上述輸出中排除<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]
將給出預期的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.