在某个识别出的模式之后删除字符串最后一位的最佳方法是什么? 例如:
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
功能的更好方法。
答案 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])