def split_on_separators(word, separators):
"""
Return a list of non-empty, non-blank strings from the original string
determined by splitting the string on any of the separators.
separators is a string of single-character separators.
>>> split_on_separators("Wow! Fantastic, you're done.", "!,")
['Wow', ' Fantastic', " you're done."]
"""
word_list = []
for ch in word.split():
stripped = ch.strip(separators)
word_list.append(stripped)
return word_list
#output
['Wow', 'Fantastic', "you're", 'done.']
分离器被移除但我似乎无法获得F前面的空白区域。其次'你已经完成了。'不是单个字符串
任何帮助将不胜感激:) 我正在使用python 3
答案 0 :(得分:2)
一种解决方案可能是:
def split_on_separators(word, separators):
word_list = [word]
auxList = []
for sep in separators:
for w in word_list:
auxList.extend(w.split(sep))
word_list = auxList
auxList = list()
return word_list
Out [76]:['哇','太棒了',“你已经完成了。”]
答案 1 :(得分:1)
这应该做的工作:
def split_on_separators(word, separators):
for sep in separators:
word = word.replace(sep, '^#^')
return [x.strip() for x in word.split('^#^')]
^#^
只是一个占位符。我把它变成了一个奇怪的角色组合,以确保它不会出现在正常的句子中。如果需要,可以替换它。
答案 2 :(得分:1)
另一个疯狂的解决方案:
import itertools
def split_on_separators(word, separators):
groups = itertools.groupby(word, lambda char: char in separators)
return [''.join(letters) for is_sep, letters in groups if not is_sep]
对于两个分隔符可以相邻的情况(并且您希望将其表示为空单词):
import itertools
def split_on_separators(word, separators):
groups = itertools.groupby(word, lambda char: char in separators)
seps2words = lambda letters: [''] * (len(tuple(letters)) - 1)
return [word for is_sep, letters in groups
for word in ([''.join(letters)] if not is_sep else seps2words(letters))]
答案 3 :(得分:0)
你在剥离它之前就分裂了。拆分是基于单词之间的空白进行的;因此,你不会在最终输出中看到它。这也是“你完成”不是单个字符串的原因。它根据单词之间的空格分割它。
您可以尝试分割分隔符:
str.split([sep [,maxsplit]])返回字符串中的单词列表, 使用sep作为分隔符字符串。