Python-删除字符串中最后一个字母之前的所有字符

标签 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

有什么想法吗?

最佳答案

要遵循 Lawrence 的评论,您可以使用反转字符串 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

关于Python-删除字符串中最后一个字母之前的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38441354/

相关文章:

python - 这段代码说明了什么 python 功能?

java - 如何在 Java 中比较字符串?

c - 在c中将子字符串插入到另一个字符串中

java - contains方法如何匹配?

python - 在pyspark中使用S3a保存文件时获取S3响应代码(仅限HTTP代码,如200,300,400,403,500等)

python - TensorFlow 占位符维度 - 有什么区别?

Javascript 函数不适用于 html5 + Flask

python - 浮点错误的发生以及如何预防

c - 如何初始化一个字符指针,然后使用 sprintf 创建一个字符串

Java 正则表达式 : 4 Letters followed by 2 Integers