【发布时间】:2011-10-05 11:52:03
【问题描述】:
我有一个带有两个“-”的字符串
467.2-123-hdxdlfow
我想删除第二个“-”之后的所有内容,以便得到“467.2-123”。最好的方法是什么?
【问题讨论】:
我有一个带有两个“-”的字符串
467.2-123-hdxdlfow
我想删除第二个“-”之后的所有内容,以便得到“467.2-123”。最好的方法是什么?
【问题讨论】:
before, sep, after = theString.rpartition("-")
这会拆分 str 关于最后一次出现的“-”,您的答案将是变量 before。
【讨论】:
In [6]: "-".join('467.2-123-hdxdlfow'.split('-')[0:2])
Out[6]: '467.2-123'
【讨论】:
>>> s = '467.2-123-hdxdlfow'
>>> s[:s.rfind('-')]
'467.2-123'
【讨论】:
如果您只关注最后一个元素,我修改了 spicavigo 的答案以排除最后一个元素。
a='467.2-123-hdxdlfow'
'-'.join(a.split('-')[:-1])
【讨论】:
a='467.2-123-hdxdlfow'
'-'.join(a.split('-')[:2])
如果你正好有 2 个'-',你可以这样做
a.rsplit('-',1)[0]
【讨论】:
试试这个正则表达式
([^-]*-[^-]*)-.*
并询问第一个捕获组的结果(示例中为(...))。
【讨论】:
你可以试试这个result = re.sub("([^-]*-[^-]*)(-.*$)", r"\1", '467.2-123-hdxdlfow')
给467.2-123
【讨论】: