Python3:删除两个分隔字符之间的子字符串

时间:2018-06-15 09:15:06

标签: python python-3.x substring

我正在寻找Python3中的一个干净的解决方案来从字符串中剪切子字符串(如内联注释)。但是,如果它是一个奇数个分隔符,那么文本的其余部分将被删除(就像编程行末尾的注释)

输入:

s="abcd;efghij;kl;mn"

输出:

s="abcdkl"

如何以与Java中的.replaceAll类似的方式完成此操作

3 个答案:

答案 0 :(得分:2)

@Marcel ,因为您对 @Kasramvd 建议的上述方法感到满意,这很好,我想建议您使用{编写一个简单的小函数{1}}关键字。

使用新参数多次调用它并获得输出,如下面的代码所示。

  

访问并查看https://www.python-course.eu/lambda.php以获取详细示例。

     

有关简要知识,请参阅Python lambda function

lambda

答案 1 :(得分:1)

如果您只有两个分隔符,则可以使用str.split(),如下所示:

In [15]: sp = s.split(';')

In [18]: result = sp[0] + sp[-1]

In [19]: result
Out[19]: 'abcdklmn'

否则,根据您的字符串和预期结果,您可以使用正则表达式来查找所需的子字符串。

演示:

In [25]: s
Out[25]: 'abcd;efghij;klmn'

In [26]: re.sub(r'(;[^;]*)?;', '', s)
Out[26]: 'abcdklmn'

In [27]: s="abcd;klmn"

In [28]: re.sub(r'(;[^;]*)?;', '', s)
Out[28]: 'abcdklmn'

答案 2 :(得分:1)

您可以使用正则表达式执行此操作:

import re
delimiters = ';'
s = 'fsdfsd;sfdsfd;ffs'
reg_exp = "[" + delimiters + "].*[" + delimiters + "]"
new_s = re.sub(reg_exp, "", s)
print (new_s)
相关问题