Formater tall til strenger i Python

stemmer
93

Jeg trenger å finne ut hvordan du formaterer tall som strenger. Koden min er her:

return str(hours)+:+str(minutes)+:+str(seconds)+ +ampm

Timer og minutter er heltall, og sekunder er en flåte. den str () -funksjonen vil konvertere alle disse tallene til tideler (0,1) sted. Så i stedet for min streng gi ut 5: 30: 59.07 pm, ville det vise noe sånt som 5,0: 30,0: 59,1 pm.

Ergo, hva bibliotek / funksjon må jeg gjøre dette for meg?

Publisert på 22/08/2008 klokken 15:10
kilden bruker
På andre språk...                            


8 svar

stemmer
124

Formateringen i Python skjer ved hjelp av strengen formater ( %) operatør :

"%02d:%02d:%02d" % (hours, minutes, seconds)

/ Edit: Det er også strftime .

Svarte 22/08/2008 kl. 15:12
kilden bruker

stemmer
91

Fra og med Python 2,6, er det et alternativ: i str.format()metode. Her er noen eksempler som bruker eksisterende streng format operatør ( %):

>>> "Name: %s, age: %d" % ('John', 35) 
'Name: John, age: 35' 
>>> i = 45 
>>> 'dec: %d/oct: %#o/hex: %#X' % (i, i, i) 
'dec: 45/oct: 055/hex: 0X2D' 
>>> "MM/DD/YY = %02d/%02d/%02d" % (12, 7, 41) 
'MM/DD/YY = 12/07/41' 
>>> 'Total with tax: $%.2f' % (13.00 * 1.0825) 
'Total with tax: $14.07' 
>>> d = {'web': 'user', 'page': 42} 
>>> 'http://xxx.yyy.zzz/%(web)s/%(page)d.html' % d 
'http://xxx.yyy.zzz/user/42.html' 

Her er de tilsvarende utdrag men ved hjelp av str.format():

>>> "Name: {0}, age: {1}".format('John', 35) 
'Name: John, age: 35' 
>>> i = 45 
>>> 'dec: {0}/oct: {0:#o}/hex: {0:#X}'.format(i) 
'dec: 45/oct: 0o55/hex: 0X2D' 
>>> "MM/DD/YY = {0:02d}/{1:02d}/{2:02d}".format(12, 7, 41) 
'MM/DD/YY = 12/07/41' 
>>> 'Total with tax: ${0:.2f}'.format(13.00 * 1.0825) 
'Total with tax: $14.07' 
>>> d = {'web': 'user', 'page': 42} 
>>> 'http://xxx.yyy.zzz/{web}/{page}.html'.format(**d) 
'http://xxx.yyy.zzz/user/42.html'

Som Python 2.6+, alle Python 3 utgivelser (så langt) forstår hvordan du gjør begge deler. Jeg skamløst dratt denne ting rett ut av min hardcore Python intro bok og lysbilder for Intro + Mellom Python kurs jeg har fra tid til annen.:-)

August 2018 UPDATE : Selvfølgelig, nå som vi har f-streng funksjonen i 3.6 , må vi tilsvarende eksempler på at , ja annet alternativ:

>>> name, age = 'John', 35
>>> f'Name: {name}, age: {age}'
'Name: John, age: 35'

>>> i = 45
>>> f'dec: {i}/oct: {i:#o}/hex: {i:#X}'
'dec: 45/oct: 0o55/hex: 0X2D'

>>> m, d, y = 12, 7, 41
>>> f"MM/DD/YY = {m:02d}/{d:02d}/{y:02d}"
'MM/DD/YY = 12/07/41'

>>> f'Total with tax: ${13.00 * 1.0825:.2f}'
'Total with tax: $14.07'

>>> d = {'web': 'user', 'page': 42}
>>> f"http://xxx.yyy.zzz/{d['web']}/{d['page']}.html"
'http://xxx.yyy.zzz/user/42.html'
Svarte 31/03/2010 kl. 05:13
kilden bruker

stemmer
7

I Python 2.6+, er det mulig å bruke format()funksjonen, så i ditt tilfelle kan du bruke:

return '{:02d}:{:02d}:{:.2f} {}'.format(hours, minutes, seconds, ampm)

Det er flere måter å bruke denne funksjonen, så for ytterligere informasjon kan du sjekke dokumentasjonen .

Svarte 27/12/2016 kl. 21:51
kilden bruker

stemmer
4

Du kan bruke C-stil streng formatering:

"%d:%d:d" % (hours, minutes, seconds)

Se her, spesielt: https://web.archive.org/web/20120415173443/http://diveintopython3.ep.io/strings.html

Svarte 22/08/2008 kl. 15:13
kilden bruker

stemmer
2

Du kan bruke følgende for å oppnå ønsket funksjonalitet

"%d:%d:d" % (hours, minutes, seconds)
Svarte 08/10/2014 kl. 06:06
kilden bruker

stemmer
1

Du kan bruke str.format () for å gjøre Python gjenkjenne noen gjenstander strenger.

Svarte 23/07/2019 kl. 16:46
kilden bruker

stemmer
1

Hvis du har en verdi som inkluderer en desimal, men desimal verdi er ubetydelig (f.eks: 100,0) og prøver å int det, vil du få en feilmelding. Det virker dumt, men kaller flyte første fikser dette.

str (mellomprodukt (float ([variable])))

Svarte 26/07/2010 kl. 15:46
kilden bruker

stemmer
1

str () i Python på et tall vil ikke skrive ut noen desimaler.

Hvis du har en flåte som du vil ignorere den desimal delen, så kan du bruke str (int (floatValue)).

Kanskje følgende kode vil demonstrere:

>>> str(5)
'5'
>>> int(8.7)
8
Svarte 24/08/2008 kl. 10:32
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more