我有几个字符串,我需要删除所有字符,直到最后一个字母。我试图保留最终的数字标签并将其存储到变量中。如果末尾没有数字标记(例如 Serial
和 Management
的情况),则该变量应该为空。需要编辑的字符串如下所示:
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/