如何在字符串开头修剪最长匹配(使用Python)

0 投票
6 回答
732 浏览
提问于 2025-04-15 15:15

在最近的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 : ]

在我看来,这样的写法比用复杂的模式或者“最长匹配”的概念更简单明了地表达了你的意思(找到最后一个点,然后取它后面的所有内容)。

撰写回答