Python - 删除所有字符,直到字符串中的最后一个字母

时间:2016-07-18 16:05:40

标签: python string

我有几个字符串,我需要删除所有字符,直到最后的字母。我正在尝试保留最终的数字标记并将其存储到变量中。如果最后没有数字标记(例如SerialManagement),则该变量应为空。需要编辑的字符串如下所示:

Ethernet5/3                   # Store '5/3'
TengigabitEthernet3/1/1       # Store '3/1/1'
100 GigabitEthernet2/6/1      # Store '2/6/1'
Management                    # Store ''
Serial                        # Store ''

在第一个数字之前我无法删除所有内容,因为有些字符串以数字开头,例如100 GigabitEthernet2/6/1

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

要关注劳伦斯的评论,您可以使用反转字符串itertools.takewhile()str.join()的组合:

from itertools import takewhile

l = [
    "Ethernet5/3",
    "TengigabitEthernet3/1/1",
    "100 GigabitEthernet2/6/1",
    "Management",
    "Serial"
]

for item in l:
    print("".join(takewhile(lambda c: not c.isalpha(), item[::-1]))[::-1])

打印:

5/3
3/1/1
2/6/1
<empty string>
<empty string>

另一种选择是使用正则表达式并在字符串末尾的group数字和斜杠中捕获(表达式中为$):

import re

l = [
    "Ethernet5/3",
    "TengigabitEthernet3/1/1",
    "100 GigabitEthernet2/6/1",
    "Management",
    "Serial"
]

pattern = re.compile(r"([0-9/]+)$")
for item in l:
    match = pattern.search(item)
    print(match.group(1) if match else "No match")

打印:

5/3
3/1/1
2/6/1
No match
No match