在模式之后替换字符串的最后部分

时间:2013-05-06 18:24:28

标签: python regex string

在某个识别出的模式之后删除字符串最后一位的最佳方法是什么? 例如:

s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'

将返回:

'some Strings-and-stuff - SomeOther Strings-and-stuff'

当某个函数操作时,查找模式“-”并删除最后一个' - '之后的最后一个字符串。

编辑:答案是:

new_string = ' - '.join(s.split(' - ')[0:-1])

我尝试过的其他事情:

>>> re.sub(r'(.*) - ', '', s[::-1])[::-1]
'some Strings-and-stuff'

使用建议的.split()函数,我可以得到输出:

>>> p = s.split(' - ')
>>> p.pop()
'TAke.THis last -part away.txt'
>>> ' - '.join(p)
'some Strings-and-stuff - SomeOther Strings-and-stuff'

它有效,但另一个建议的答案是摆脱非单一班轮pop()del功能的更好方法。

2 个答案:

答案 0 :(得分:2)

你想使用拆分!

In [130]: s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'

In [131]: s.split(" - ")[0:-1]
Out[131]: ['some Strings-and-stuff', 'SomeOther Strings-and-stuff']

当您按“ - ”拆分时,它将返回一个列表,该列表中的项目已在字符串中用“ - ”分隔。

然后从第一个项目到最后一个项目进行索引,这就是分割后[0:-1]

的原因

答案 1 :(得分:2)

这将在一行中为您提供所需的结果:

s = " - ".join(s.split(' - ')[:-1])
相关问题