2つのリストがあります:最初のリストの1つの小さい1の反復要素ですが、タイムラインからラインまでの価格が異なります。Pythonリストコレクション
小さなリストの例:
> lekilist = ['Амертил таб. п/о 10мг №20'
> 'Амертил таб. п/о 10мг №7'
> 'Афлубин капли д/пр. внутрь ф/кап. 20мл'
> 'Афлубин капли д/пр. внутрь ф/кап. 50мл']
大規模なリスト、それに価格が間の最後の番号である ";"(7.15、 7.99、8.05、... ):
ls= [АМЕРТИЛ ТАБЛ.П/О, 10МГ, №20;BIOFARM;ПОЛЬША;0;7.15;0
АМЕРТИЛ ТАБЛ.П/О, 10МГ, №20;BIOFARM;ПОЛЬША;0;7.99;00
АМЕРТИЛ ТАБЛ.П/О, 10МГ, №20;BIOFARM;ПОЛЬША;0;8.05;0
АМЕРТИЛ ТАБЛ.П/О, 10МГ, №7;BIOFARM;ПОЛЬША;0;4.07;0
АМЕРТИЛ ТАБЛ.П/О, 10МГ, №7;BIOFARM;ПОЛЬША;0;4.16;0
АФЛУБИН ТАБЛ., №24;RICHARD BITTNER;АВСТРИЯ;0;16.81;0
АФЛУБИН ТАБЛ., №24;RICHARD BITTNER;АВСТРИЯ;0;16.81;0
АФЛУБИН Ф-КАП., КАП.ОР., 20МЛ;RICHARD BITTNER;АВСТРИЯ;0;4.95;0
АФЛУБИН Ф-КАП., КАП.ОР., 20МЛ;RICHARD BITTNER;АВСТРИЯ;0;9.96;0]
小さな内の各項目の追加リストを作成する必要があります小さなリスト(重要な要素:АМЕРТИЛ(name)или(or)АФЛУБИН(name)или(or)...、ТАБ。(pills)илиКАПС。)の位置を特定する、カプセル)илиТАБ.П/О(コーティング錠)Ф-КАП(シロップ)...、№20錠剤の(数)или№7или20мл(20ml)中
少ない仕事:
import re
ls=[]
for i in f: #aligns the name to a small list
x = re.findall('[А-ЯТАБЛ\.|ТАБЛ\.П\/О|КАПС\.|СПРЕЙ|СИРОП| Ф\-КАП\.\, КАП\.ОР\.|№\]+[\d]+', i)
y = re.sub ('ТАБЛ.', 'ТАБ.', str(x))
z = re.sub('ТАБ.П/О', 'ТАБ. П/О', str(y))
c = re.sub('Ф-КАП., КАП.ОР.', 'КАПЛИ Д/ПР. ВНУТРЬ Ф/КАП.', str(z))
ls.append(c)
#Compare items of the first and second list
lekilist[x].replace(' ', '') in ls[y].replace(' ', '').replace(',', '')
# find the price
ls[10].split('\'')[-4]
そのために、それはこれらのリストをバイパスするならば、私はしばらくのループを構築することはできません、問題はそれが不慣れな要素に遭遇したとき、それはi番目のすべての要素の上に行くとanythを印刷していないということですing。すべての偶然があるかどうか、そして次に動かされるかどうか、彼がリスト全体を見ることをする必要があります。希望に近づくための悲惨な試み:
x = 0;私の問題のためのy = 0
while y <= len(lsPharm):
if lekilist[x].replace(' ', '') in lsPharm[y].replace(' ', '').replace(',', ''):
o.write(lekilist[x].replace(' ', '') +'\n' + lsPharm[y].replace(' ', '').replace(',', '')+ '\n ------\n')
y+=1
else:
x+=1
これは、ロシアのサイトに移動する必要がありますStackOverflowのために。プレーンStackOverflowは英語で質問が必要です。 –
訂正しました – bigidigi89