我有几个字符串,我需要删除所有字符,直到最后的字母。我正在尝试保留最终的数字标记并将其存储到变量中。如果最后没有数字标记(例如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
。
有什么想法吗?
答案 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