ドットのドット間の範囲を拡大する:Pythonの - 私のようなIDのリストがあるとし(id1..id2)
ids= 1/1/n1..1/1/n5 , 1/1/x1 , 1/1/g1
予想される出力:
1/1/n1 , 1/1/n2 , 1/1/n3 , 1/1/n4 , 1/1/n5 ,1/1/x1, 1/1/g1
をi「はidを見つけどこ意味します。 .ids、私は非常に基本的なコードを書かれている
ギャップを埋めるだろうが、私はより多くのニシキヘビ解決策を探しています
import re
ports_list=['1/1/n1..1/1/n8']
n = 2
port_range=[]
for port in ports_list:
if '..' in port:
groups = port.split('..') #gives ['1/1/n1', '1/1/n8']
for item in groups:
port_split = item.split('/')
port_join='/'.join(port_split[:n]), '/'.join(port_split[n:])
port_join=port_join[0]+"/"
port_split=port_split[2] # n1 n8
get_str=port_split[0][0]
num=re.findall(r'\d+', port_split) # 1 8
port_range.append(num[0])
#remove port with '..
ports_list.remove(port)
n1=port_range[0]
n2=port_range[1]
final_number_list=list(range(int(n1),int(n2)+1))
my_new_list = [ get_str + str(n) for n in final_number_list]
final_list=[ port_join + str(n) for n in my_new_list]
ports_list=ports_list+final_list
print ports_list
予想される出力を提供します:
['1/1/n1', '1/1/n2', '1/1/n3', '1/1/n4', '1/1/n5', '1/1/n6', '1/1/n7', '1/1/n8']
しかし、どのように、それは複雑なロジックを使用せず、簡単に解決することができますか?
いかが '1月1日/ N11保存されます。 .1/1/n15'? – alecxe
それはうまくいった。 ** n18..n22 **のような「キャリー」がある場合は機能しませんが、問題の説明には記載されていません。 – Prune