Portál AbcLinuxu, 15. května 2025 14:54

Dotaz: Dělení stringu Python

pdp7 avatar 13.5. 16:34 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Dělení stringu Python
Přečteno: 127×
Odpovědět | Admin
Ahoj, je nějaký elegantní způsob jak to v Pythonu zapsat:

Mám dejme tomu string "9000" a určím, že počet celých čísel bude např. 4 a desetinných např. 2 a potřebuji aby výstup byl "90.0"

To samé pro příklad "19000" kde výstupem bude "190.0"

Zrovnatak třeba "111900" pro výstup "1119.0"

Zrovnatak třeba "111920" pro výstup "1119.20"

Já to prostě neumím vyjádřit, je pro mě problém ta proměnlivá délka vstupního stringu. Nechce se mi sem dávat kód, určitě byste se smáli :D
"První" komunita sdílející software

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.5. 17:27 Xerces
Rozbalit Rozbalit vše Re: Dělení stringu Python
Odpovědět | | Sbalit | Link | Blokovat | Admin
V principu jde o to, vložit tečku na n-tou pozici z prava, kde n je požadovaný počet desetinných míst. Lze na to použít slices a sestavit výsledek pomocí [:-n] + '.' + [-n:]. Nějak jsem ale nepochopil, jak by se měl výsledek omezit v případě, že zadáte počet celých čísel menší, než je ve vstupním řetězci a proč je pro 19000 a požadovaná 2 desetinná místa výstup 190.0 a nikoliv 190.00. :-)
pdp7 avatar 13.5. 18:00 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Dělení stringu Python
Jasně jestli 190.0 nebo 190.00 je už jedno.
#/usr/bin/python3
string = "X19020"
X = string[1:]
print(len(X), X)

integer_digits = 4
decimal_digits = 2
integersX = str(X[:integer_digits])
decimalsX = str(X[-decimal_digits:])

print("X" + integersX + "." + decimalsX)
tohle vypíše:
5 19020
X1902.20
ale potřebuji:
5 19020
X190.20
Řešení 1× (karkar)
13.5. 17:38 karkar | skóre: 8 | blog: Kartrolling
Rozbalit Rozbalit vše Re: Dělení stringu Python
Odpovědět | | Sbalit | Link | Blokovat | Admin
s = '1911200'
# adding character at specific position
pos=4
s2 = s[:pos] + "." + s[pos:]
print(s2, type(s2))
num1= float(s2)
print(num1,type(num1))
pdp7 avatar 13.5. 18:03 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Dělení stringu Python
Super to mi stačí.
13.5. 18:11 X
Rozbalit Rozbalit vše Re: Dělení stringu Python
Pokracovani? ;) Pripadne napis a doplnim to na Git.
pdp7 avatar včera 08:08 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Dělení stringu Python
Tak nějak, asi doplním funkcionalitu na čtení souřadnic které jsou bez desetiné tečky s určením počtu číslic (jak to v excellonu, nebo i gerberu) často bývá.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.