我想用,
->
,=>
或用多个空格包裹的字符串来分割字符串,这意味着分割后我可以从以下字符串中得到两项,分别是she
和he
:"she he", "she he", "she he ", "she he ", "she->he", "she ->he", "she=>he", "she=> he", " she-> he ", " she => he \n"
我试过使用此:
re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split(' she -> he \n')
我得到的是一个包含四个项目的列表:
[' she', ' -> ', ' -> ', 'he \n']
。为此,
re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split('she he')
我得到这个:
['she', ' ', None, 'he']
。为什么有四个项目?而且我怎么能只得到两个而没有中间两个呢?
最佳答案
如果您可以只删除输入字符串。根据您的描述,您只需要在\s+
或\s*->\s*
或\s*=>\s*
上拆分单词
所以这是我的解决方案:
p = re.compile(r'\s*[-=]>\s*|\s+')
input1 = "she he"
input2 = " she -> he \n".strip()
print p.split(input1)
print p.split(input2)
您的输出将只是“她”和“他”:
['she', 'he']