在python中,当子字符串在一行中出现一次而不是两次时删除它
我知道如何删除或替换子字符串。但我只想在子串不重复的情况下使用它。我做了一个看起来很难看的解决方案,我想知道是否有更好的解决方案 假设以下字符串:在python中,当子字符串在一行中出现一次而不是两次时删除它,python,regex,string,Python,Regex,String,我知道如何删除或替换子字符串。但我只想在子串不重复的情况下使用它。我做了一个看起来很难看的解决方案,我想知道是否有更好的解决方案 假设以下字符串: test = "Hello\n,I am here now.\n\nSo what's the problem?" 第一个\n应该删除,但是第二个\n \n不应该删除 为此,我将\n\n替换为普通会话字符串中永远不会出现的内容,如: x = test.replace('\n\n','42#*#') x = x.replace('\n','')
test = "Hello\n,I am here now.\n\nSo what's the problem?"
第一个\n应该删除,但是第二个\n \n不应该删除
为此,我将\n\n替换为普通会话字符串中永远不会出现的内容,如:
x = test.replace('\n\n','42#*#')
x = x.replace('\n','')
x = x.replace('42#*#','\n\n')
这是可行的,但我想知道是否有更好的办法解决这个问题
编辑:我尝试了从
但是,使用以下正则表达式时:
re.split('(?<!,)\n', test)
所以\n和\n\n都被删除了,我如何避免这种情况?您可以将前瞻和回望断言结合起来:
re.sub(r'\n(?!\n)(?<!\n\n)', '', test)
您可以结合使用前向和后向断言:
re.sub(r'\n(?!\n)(?<!\n\n)', '', test)
非常感谢。这实际上是有效的,而不是标记的duplicate@Kev1n91我还投票决定重新讨论这个问题。这不是链接的副本。我喜欢这个环顾四周的顺序。谢谢。这实际上是有效的,而不是标记的duplicate@Kev1n91我还投票决定重新讨论这个问题。它不是链接的副本。我喜欢这种环顾四周的顺序。