Gå til innhold

Konvertere tekststr til matematisk uttrykk? [løst]


Anbefalte innlegg

Hvis jeg har en tekststreng som ser slik ut

streng = " 2 + 3"

 

Finnes det en lettvindt måte å konvertere dette til et matematisk uttrykk, slik at det blir slik.

 

>>>streng = "2 + 3"
>>>num = streng.konverter_til_matematisk_uttrykk()
>>>print(num)
5
>>>

 

Den nærliggende måten er å dele opp strengen i tokens og konvertere hvert token som ikke er en operator til en int, og sjekke for operator, for så å legge dette sammen.

Endret av Orjanp
Lenke til kommentar
Videoannonse
Annonse

'eval' er veldig lettvindt, men du må bare bruke det på strenger som du stoler på. Python kjører koden som du sender til eval så man bør passe på.

 

eval('os.unlink("viktigfil.viktig")') pleier å kunne gjøre skade :)

 

ola

Lenke til kommentar
'eval' er veldig lettvindt, men du må bare bruke det på strenger som du stoler på. Python kjører koden som du sender til eval så man bør passe på.

 

eval('os.unlink("viktigfil.viktig")') pleier å kunne gjøre skade :)

 

ola

Skal passe på det.

 

I denne sammenhengen skal det kun brukes til å evaluere et matematisk uttrykk som er konvertert fra prefix/innfix/postfix notasjon. Så jeg vil anta at jeg er på trygg grund. :)

Lenke til kommentar
Det er en utrolig kul funksjon egentlig. Jeg tror den kommer fra Lisp. Jeg kastet bort en hel dag på å lete etter noe lignene i VBA.

Mange språk som har eval funksjoner, jeg tror VBA har det også i alle fall har VBScript (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcteval.asp) det har mye til felles med VBA.

 

Men hvorfor ikke bruke Python og COM når man først skal være i himmelen. Det finnes forøverig utrolig mye python 'features' som er 100 ganger 'kulere' enn eval.

 

ola

Lenke til kommentar
Det er en utrolig kul funksjon egentlig. Jeg tror den kommer fra Lisp. Jeg kastet bort en hel dag på å lete etter noe lignene i VBA.

Mange språk som har eval funksjoner, jeg tror VBA har det også i alle fall har VBScript (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcteval.asp) det har mye til felles med VBA.

 

Men hvorfor ikke bruke Python og COM når man først skal være i himmelen. Det finnes forøverig utrolig mye python 'features' som er 100 ganger 'kulere' enn eval.

 

ola

Jeg lette etter eval ifm en større Excel-macro. Den finnes ikke der såvidt jeg kunne se, men i VBA for Access skal den visst være. Jeg har ellers gode erfaringer med å styre office-programmer via COM.

 

Jeg fastholder uansett at eval() er en kul funksjon som er kjekk til sitt bruk. Det er mange situasjoner spørsmålet om sikkerhet ikke er relevant i det hele tatt. Og hvorfor er den ikke elegant?

 

Nå er kanskje begrepet "kul" litt pussig i denne sammenhengen. En funksjon som mer åpenbart fortjener betegnelsen er difflib.get_close_matches().

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...