Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中删除字符串中的最后斜杠和数字_Python_Regex_String - Fatal编程技术网

在Python中删除字符串中的最后斜杠和数字

在Python中删除字符串中的最后斜杠和数字,python,regex,string,Python,Regex,String,我有这样的字符串: 文本-23 文本-9 2011-is-to-be-cool-455 我需要从Python中的字符串中删除final-number(我对正则表达式很在行) 谢谢你的帮助 试试这个: '2011-is-going-to-be-cool-455'.rstrip('0123456789-') str = re.sub(r'-[0-9]+$', '', str) 试试这个: str = re.sub(r'-[0-9]+$', '', str) 假设所有文本都以-number结尾

我有这样的字符串:

文本-23

文本-9

2011-is-to-be-cool-455

我需要从Python中的字符串中删除final-number(我对正则表达式很在行)

谢谢你的帮助

试试这个:

'2011-is-going-to-be-cool-455'.rstrip('0123456789-')
str = re.sub(r'-[0-9]+$', '', str)
试试这个:

str = re.sub(r'-[0-9]+$', '', str)

假设所有文本都以-number结尾

>>> s="2011-is-going-to-be-cool-455"
>>> s.rsplit("-",1)[0]
'2011-is-going-to-be-cool'


假设所有文本都以-number结尾

>>> s="2011-is-going-to-be-cool-455"
>>> s.rsplit("-",1)[0]
'2011-is-going-to-be-cool'


在您的情况下,您可能需要:

我认为这比
split(“-”,1)
更简洁,因为这正是您想要做的。输出几乎相同,只是rpartition的输出包含分隔符

而且,只是为了好玩,我看了看,rpartition稍微快一点

import timeit
print timeit.Timer("'2011-is-going-to-be-cool-455'.rsplit('-', 1)").timeit()
#1.57374787331
print timeit.Timer("'2011-is-going-to-be-cool-455'.rpartition('-')").timeit()
#1.40013813972

print timeit.Timer("'text-23'.rsplit('-', 1)").timeit()
#1.55314087868
print timeit.Timer("'text-23'.rpartition('-')").timeit()
#1.33835101128

print timeit.Timer("''.rsplit('-', 1)").timeit()
#1.3037071228
print timeit.Timer("''.rpartition('-')").timeit()
#1.20357298851

在您的情况下,您可能需要:

我认为这比
split(“-”,1)
更简洁,因为这正是您想要做的。输出几乎相同,只是rpartition的输出包含分隔符

而且,只是为了好玩,我看了看,rpartition稍微快一点

import timeit
print timeit.Timer("'2011-is-going-to-be-cool-455'.rsplit('-', 1)").timeit()
#1.57374787331
print timeit.Timer("'2011-is-going-to-be-cool-455'.rpartition('-')").timeit()
#1.40013813972

print timeit.Timer("'text-23'.rsplit('-', 1)").timeit()
#1.55314087868
print timeit.Timer("'text-23'.rpartition('-')").timeit()
#1.33835101128

print timeit.Timer("''.rsplit('-', 1)").timeit()
#1.3037071228
print timeit.Timer("''.rpartition('-')").timeit()
#1.20357298851
我认为@ghostdog74建议的.rsplit()方法是最好的;然而,这里有另一个选择:

for s in myStrings:
    offs = s.rfind('-')
    s = s if offs==-1 else s[:offs]
我认为@ghostdog74建议的.rsplit()方法是最好的;然而,这里有另一个选择:

for s in myStrings:
    offs = s.rfind('-')
    s = s if offs==-1 else s[:offs]

根据OP中“删除最终数字”的含义,像“2011-is-going-to-cool-455-554”这样的字符串也会删除“455”,因为它不是最终数字。谢谢Felmari!如果在-number之前有一个数字,比如:“i-was-born-in-1982-543”@ana:正如ghostdog74所指出的那样,这是行不通的。如果其他答案对你有帮助,请参阅。@安娜:这就是为什么你在提问时必须非常明确地说明你想做什么的原因=p根据OP的“删除最终数字”的含义,像“2011-is-go-to-be-cool-455-554”这样的字符串也会删除“455”,因为它不是最终数字。谢谢Felmari!如果在-number之前有一个数字,比如:“i-was-born-in-1982-543”@ana:正如ghostdog74所指出的那样,这是行不通的。如果其他答案对你有帮助,请参阅。@ana:这就是为什么当你问一个问题时,你必须非常明确地说明你想做什么。=Por
str=re.sub(r'-\d+$,'',str)
str=re.sub(r'-\d+$,'',str很好的解决方案。我总是忘记(r)分区,因为它非常类似于(r)拆分,但在某些情况下它更适合。很好的解决方案。我总是忘记(r)分区,因为它与(r)拆分非常相似,但在某些情况下它更适合。