如何在字符串开头修剪最长匹配(使用Python)
在最近的bash版本中,我可以这样做:
$ string="Universe.World.Country.State.City.Street"
$ echo $string
Universe.World.Country.State.City.Street
$ newString="${string##*.}"
$ echo $newString
Street
用Python,有什么简洁的方法可以做到同样的事情吗?我想要的是最后一个句点后面的那部分内容。
谢谢!
6 个回答
1
>>> "Universe.World.Country.State.City.Street".rsplit('.',1)[1]
'Street'
# rpartition
$ python -m timeit -r100 -n100 -s 'x="Universe.World.Country.State.City.Street"' 'x.rpartition(".")[-1]'
100 loops, best of 100: 0.749 usec per loop
# rfind
$ python -m timeit -r100 -n100 -s 'x="Universe.World.Country.State.City.Street"' 'x[x.rfind(".")+1:]'
100 loops, best of 100: 0.808 usec per loop
# rsplit
$ python -m timeit -r100 -n100 -s 'x="Universe.World.Country.State.City.Street"' 'x.rsplit(".",1)[1]'
100 loops, best of 100: 0.858 usec per loop
# split
$ python -m timeit -r100 -n100 -s 'x="Universe.World.Country.State.City.Street"' 'x.split(".")[-1]'
100 loops, best of 100: 1.26 usec per loop
# regex
$ python -m timeit -r100 -n100 -s 'import re;rex=re.compile(r"\.([^.]*)$");x="Universe.World.Country.State.City.Street"' 'rex.search(x).groups()[0]'
100 loops, best of 100: 3.16 usec per loop
编辑:根据SilentGhost的建议,使用rpartition似乎是最有效的方式。
3
>>> 'Universe.World.Country.State.City.Street'.rpartition('.')[2]
'Street'
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
3
你觉得这样怎么样
x[x.rfind('.') + 1 : ]
在我看来,这样的写法比用复杂的模式或者“最长匹配”的概念更简单明了地表达了你的意思(找到最后一个点,然后取它后面的所有内容)。