2016-07-18 9 views
1

私は最後のアルファベット文字まですべての文字を削除する必要があるいくつかの文字列を持っています。私は最終的な数値タグを保持し、それを変数に格納しようとしています。末尾に数値タグがない場合(SerialManagementのように)、変数は空でなければなりません。 100 GigabitEthernet2/6/1のように、数字で始まるいくつかの文字列があるので、私は最初の数まで、すべてを取り除くことはできませんPython - 文字列内の最後のアルファベットまですべての文字を削除します

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

:そうのように見えるの編集が必要になり、文字列。

アイデア?

+1

。 –

答えて

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 
は、文字列を逆に最初のアルファ文字のインデックスを見つけ、そこから切り取る
関連する問題