Python yeniden ifadelerini kullanmaya yeni başlıyorum. İhtiyacım olanı elde ettim ama deneyimimi kaçırdığımdan çok çirkin. Amacım formunun dizelerden oluşan bir dizi dönüştürmek için geçerli:, yüzen bir diziyePython regex Dize dizisine dizi dizisi
notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]
böylece yukarıdaki dizi verimleri:
changes = [10.0,-5.0,0,-21.2]
kod aşağıda o başarır ama gerçekten tekrarlayan ve Kötü tarz Bunu nasıl optimize edebilirim? (O kadar çok ufacık girişler için, büyük girişler için ilgili)
changes = []
for note in notes:
m = re.search(r"(?:(\d+\.\d+\%\shigher)|(\d+\.\d+\%\slower)|(Same\sas))", note)
if m:
if m.groups(0):
if m.groups(0)[0]:
changes += [float(re.match(r"(\d+\.\d+)", m.groups(0)[0]).groups(0)[0])]
elif m.groups(0)[1]:
changes += [-float(re.match(r"(\d+\.\d+)", m.groups(0)[1]).groups(0)[0])]
else:
changes += [0.0]
print changes
Bunu gerçekten CodeReview.SE'de yayınlamalısınız ... Ayrıca, eğer bu ifadeleri değiştirebilirseniz, eğer m: eğer m: eğer m: eğer m.groups (0): 'ise, birine, m ve m.grupsa (0): ' – Druzion