版本:的Python 3.4.3在Python值的所有可能的組合
嗨,我想創建一個腳本讀取一些選擇項目的菱選擇在一個HTML文件,並創建一個數據庫所有可能的選擇都基於它們的值爲其分配唯一的ID。
這是HTML的結構:
<select id="perforar" onchange="Actualiza(this.id, this.options[this.selectedIndex].value)">
<option value="g1">sin perforacion</option>
<option value="g2">1 Linea de perforación</option>
<option value="g3">2 Lineas de perforación</option>
<option value="g4">3 Lineas de perforación</option>
<option value="g5">4 Lineas de perforación</option>
<option value="g6">5 Lineas de perforación</option>
<option value="g7">6 Lineas de perforación</option>
</select></td>
</tr><tr><td>Ennoblecimiento: </td><td>
<select id="ennoblecimiento" onchange="Actualiza(this.id, this.options[this.selectedIndex].value)">
<option value="h1">sin ennoblecimiento</option>
<option value="h2">barniz UV</option>
<option value="h3">laminado</option>
</select></td>
</tr><tr><td>Plegado: </td><td>
<select id="plegado" onchange="Actualiza(this.id, this.options[this.selectedIndex].value)">
<option value="i1">plegado envolvente</option>
<option value="i2">plegado en acordéon</option>
<option value="i3">plegado en ventana</option>
我手動複製/粘貼所有入.txt,然後運行該代碼:
#load file into buffer
leyendo = open("generadorbasedatos.txt", 'r')
archivotxt = leyendo.read()
leyendo.close()
#split it for lines
listadividida = []
listadividida= archivotxt.split("\n")
#create a dict for later
basededatos = {}
#for each line
for i in listadividida:
if not "<option" in i: #if isn't an option, delete that line
i = ""
else: #if it's an option, get the value and the text
#the text
desde = '>'
hasta = '<'
_,_,resto = i.partition(desde)
opcion,_,_ = resto.partition(hasta)
#the value
desde = 'value="'
hasta = '">'
_,_,resto = i.partition(desde)
laid,_,_ = resto.partition(hasta)
#add them to a dict
basededatos[laid] = [opcion, laid]
#And this is where I'm lost and I need help
print(basededatos)
現在到了麻煩,我想該腳本創建所有可能組合的列表併爲每個組合分配一個ID,以使用這些值創建ID,因此輸出應如下所示:
g1h1i1: [1 Linea de perforación, Sin ennoblecimiento, plegado envolvente]
g1h1i2: [1 Linea de perforación, Sin ennoblecimiento, plegado en acordeón]
g1h1i3: [1 Linea de perforación, Sin ennoblecimiento, plegado en ventana]
g1h2i1: [1 Linea de perforación, barniz, plegado envolvente]
g1h2i2: [1 Linea de perforación, barniz, plegado plegado en acordeón]
g1h3i3: [1 Linea de perforación, barniz, plegado en ventana]
最終所有可能的組合。我嘗試itertools,並設法凍結我的電腦(可能是由於內存不足或無限循環問題),所以現在我在這裏問。
什麼是實現我想要做的最好的方法?
注意:有超過12個選擇,這裏只複製/粘貼3個例子,但代碼應該能夠創建超過3個選擇的所有組合。
你需要的'[1凌特德perforación,仙ennoblecimiento,plegado envolvente]'部分或它足以創建包含哪些選項列表的「唯一ID」。 – pzp
如果有超過12個選擇,你會得到大量的組合 - 假設平均每個選擇5項意味着超過2.4億個組合('5 ** 12')。這可能是爲什麼它需要一段時間... –
@pzp理想情況下,我想知道什麼選項實際上創建該唯一的ID。 – Saelyth