Toon posts:

Opmaak write uitvoer

Pagina: 1
Acties:

Onderwerpen

Vraag


  • HWI17
  • Registratie: Oktober 2017
  • Laatst online: 08-05-2019
Ik heb een programmaatje in Python 3.7 dat goed werkt maar ik krijg de uitvoer niet in orde. Hier de regels waar het probleem zit:

f.write(key)
f.write(str(value))
f.close()

Dit geeft alle uitvoer achter elkaar, wat ik graag wil is ruimte tussen key en value en een linefeed na elke regel. Kan iemand me op weg helpen?


...

Beste antwoord (via HWI17 op 23-10-2018 09:51)


  • RobIII
  • Registratie: December 2001
  • Laatst online: 22:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

@NielsNL Als je nu eens even ophoudt (foutieve) kant-en-klare oplossingen voor te schotelen? Vertel TS liever waar 'ie de documentatie vindt, hoe 'ie dat moet interpreteren en leg voor mijn part uit hoe het volgens jou zou moeten werken. Maar hou eens op gewoon code zonder onderbouwing neer te plempen a.u.b.
Give a man a fish, feed him for a day. Teach a man how to fish and feed him for a lifetime
@HWI17 Ik denk dat het handig zou zijn geweest als je even explicieter was geweest in dat je probeert te outputten naar een file. Maar heb je er al eens gewoon de documentatie op nageslagen? Of, zoals hier net boven me iemand me voorschiet: al gewoon eens gegoogled?
f.write(string) writes the contents of string to the file, returning...
HWI17 schreef op maandag 22 oktober 2018 @ 22:36:
Het is Python 3.6.3 dus geen 3.7
In dat soort minor versieverschillen zit écht* geen wijziging in zoiets triviaals en basaals als het samenvoegen van twee strings.

Verder zou ik het op prijs stellen, @HWI17 , als je voortaan bij 't openen van een nieuw topic onze quickstart gebruikt. Zoals je zult lezen verwachten we wel (héél) wat meer zaken in een topicstart terug te vinden dan er nu in aanwezig is.

Inhoudelijk: NielsNL in "Opmaak write uitvoer" was een heel eind in de richting. De write() method accepteert maar 1 argument (str) dus 4 argumenten zoals hier voorgesteld gaat niet werken (hence de foutmelding die je krijgt die zeurt over 4 argumenten i.p.v. 1)).

Dus... write moet maar 1 argument hebben. En met NielsNL in "Opmaak write uitvoer" zat je een eind in de juiste richting... kijk dan nog eens naar die post en kijk dan nog eens goed naar de haakjes...

f.write('foo') +' '+ 'bar' + '\n')

Zie je het verschil?
In @NielsNL's voorstel heb je object.method(argument) + string + string + string en met dat haakje verzetten heb je object.method(argument) (waarbij argument eerst wordt gevuld met string + string + string + string maar dat kan ik zo niet mooi noteren :P )



* Nou ja, zeg nooit nooit...

[Voor 87% gewijzigd door RobIII op 22-10-2018 23:24]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Alle reacties


  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 19-05 21:04

MAX3400

XBL: OctagonQontrol

\n geeft toch een line-break?
+ ' ' + geeft toch een spatie?

Of heb ik het nu verkeerd en gebruik je een andere Python?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


  • NielsNL
  • Registratie: Januari 2002
  • Laatst online: 27-05 09:43

NielsNL

DigiCow

MAX3400 schreef op maandag 22 oktober 2018 @ 22:25:
\n geeft toch een line-break?
+ ' ' + geeft toch een spatie?

Of heb ik het nu verkeerd en gebruik je een andere Python?
f.write(key) + ' ' + str(value) + '\n'

M'n Oma is een site aan het haken.


  • HWI17
  • Registratie: Oktober 2017
  • Laatst online: 08-05-2019
Het is Python 3.6.3 dus geen 3.7

Ik heb dit geprobeerd: f.write(key) +' '+ (str(value)) + '\n'

en krijg als foutmelding: TypeError: unsupported operand type(s) for +: 'int' and 'str'

  • NielsNL
  • Registratie: Januari 2002
  • Laatst online: 27-05 09:43

NielsNL

DigiCow

Python:
1
f.write(key,' ',str(value),'\n')

M'n Oma is een site aan het haken.


  • HWI17
  • Registratie: Oktober 2017
  • Laatst online: 08-05-2019
Krijg nu: TypeError: write() takes exactly one argument (4 given)

Iets dergelijks had ik al geprobeerd en werkte niet, vandaar dat ik beide write-opdrachten op verschillende regels had gezet.

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 21:35
HWI17 schreef op maandag 22 oktober 2018 @ 22:50:
Krijg nu: TypeError: write() takes exactly one argument (4 given)

Iets dergelijks had ik al geprobeerd en werkte niet, vandaar dat ik beide write-opdrachten op verschillende regels had gezet.
Zoek eens op 'python string concatenation' of 'python string formatting'.

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • Beste antwoord
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

@NielsNL Als je nu eens even ophoudt (foutieve) kant-en-klare oplossingen voor te schotelen? Vertel TS liever waar 'ie de documentatie vindt, hoe 'ie dat moet interpreteren en leg voor mijn part uit hoe het volgens jou zou moeten werken. Maar hou eens op gewoon code zonder onderbouwing neer te plempen a.u.b.
Give a man a fish, feed him for a day. Teach a man how to fish and feed him for a lifetime
@HWI17 Ik denk dat het handig zou zijn geweest als je even explicieter was geweest in dat je probeert te outputten naar een file. Maar heb je er al eens gewoon de documentatie op nageslagen? Of, zoals hier net boven me iemand me voorschiet: al gewoon eens gegoogled?
f.write(string) writes the contents of string to the file, returning...
HWI17 schreef op maandag 22 oktober 2018 @ 22:36:
Het is Python 3.6.3 dus geen 3.7
In dat soort minor versieverschillen zit écht* geen wijziging in zoiets triviaals en basaals als het samenvoegen van twee strings.

Verder zou ik het op prijs stellen, @HWI17 , als je voortaan bij 't openen van een nieuw topic onze quickstart gebruikt. Zoals je zult lezen verwachten we wel (héél) wat meer zaken in een topicstart terug te vinden dan er nu in aanwezig is.

Inhoudelijk: NielsNL in "Opmaak write uitvoer" was een heel eind in de richting. De write() method accepteert maar 1 argument (str) dus 4 argumenten zoals hier voorgesteld gaat niet werken (hence de foutmelding die je krijgt die zeurt over 4 argumenten i.p.v. 1)).

Dus... write moet maar 1 argument hebben. En met NielsNL in "Opmaak write uitvoer" zat je een eind in de juiste richting... kijk dan nog eens naar die post en kijk dan nog eens goed naar de haakjes...

f.write('foo') +' '+ 'bar' + '\n')

Zie je het verschil?
In @NielsNL's voorstel heb je object.method(argument) + string + string + string en met dat haakje verzetten heb je object.method(argument) (waarbij argument eerst wordt gevuld met string + string + string + string maar dat kan ik zo niet mooi noteren :P )



* Nou ja, zeg nooit nooit...

[Voor 87% gewijzigd door RobIII op 22-10-2018 23:24]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Groax
  • Registratie: Oktober 2012
  • Laatst online: 18-05 17:19
NielsNL schreef op maandag 22 oktober 2018 @ 22:42:
Python:
1
f.write(key,' ',str(value),'\n')
Python:
1
f.write(str('{} {}\n').format(key, value)


veel mooier :)

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

moese schreef op dinsdag 23 oktober 2018 @ 01:19:
[...]


Python:
1
f.write(str('{} {}\n').format(key, value)


veel mooier :)
8)7
Dacht je dat dit voor jou niet van toepassing was?
RobIII schreef op maandag 22 oktober 2018 @ 22:54:
@NielsNL Als je nu eens even ophoudt (foutieve) kant-en-klare oplossingen voor te schotelen? Vertel TS liever waar 'ie de documentatie vindt, hoe 'ie dat moet interpreteren en leg voor mijn part uit hoe het volgens jou zou moeten werken. Maar hou eens op gewoon code zonder onderbouwing neer te plempen a.u.b.
Emphasis mine

Hoe leert TS hier nou van? Dit bevordert alleen maar "copy/paste programming" ipv dat je iemand die nog lerende is wegwijs maakt in documentatie, hoe die te lezen/interpreteren enz. Als je nou nog enige vorm van uitleg of onderbouwing gaf, allee. Maar gewoon een regel code dumpen en "veel mooier" roepen (wederom: zonder onderbouwing; wat is er dan mooier aan?) is niet constructief (en ook ongewenst in de Devschuur®)

(Daarbij werkt jouw code ook al niet :X :F ook jij mist een haakje...)

[Voor 5% gewijzigd door RobIII op 23-10-2018 02:42]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Ik heb geen verstand van Python, dat gezegd hebbende zie ik dit staan:
code:
1
2
3
f.write(key)
f.write(str(value))
f.close()

Ik zie daar 2 keer f.write voorkomen en kennelijk levert de output een geconcatte key + value op. Zou je dan tussen die 2 f.write's een 3e en evt. een 4e toe kunnen voegen waar je een spatie en/of een linebreak in zet?

☀️ 18 Panelen | 🔋 5,8 kWp | ⚡ SolarEdge SE6K


  • HWI17
  • Registratie: Oktober 2017
  • Laatst online: 08-05-2019
f.write(key+' '+str(value)+'\n')

Hiermee krijg ik nu een keurige uitvoer en ik begrijp nu hoe het werkt, door er haakjes omheen te zetten wordt het één argument ipv vier. Veel dank allen, ik ben weer wat wijzer geworden, excuses voor de ophef hier en daar. Ik ben op mijn 63ste begonnen met Python, was voeger handig met Pascal maar nu een nieuwe taal in de vingers krijgen valt niet mee. Maar gelukkig bestaan er dit soort fora!

  • Groax
  • Registratie: Oktober 2012
  • Laatst online: 18-05 17:19
RobIII schreef op dinsdag 23 oktober 2018 @ 02:37:
[...]

8)7
Dacht je dat dit voor jou niet van toepassing was?

[...]

Emphasis mine

Hoe leert TS hier nou van? Dit bevordert alleen maar "copy/paste programming" ipv dat je iemand die nog lerende is wegwijs maakt in documentatie, hoe die te lezen/interpreteren enz. Als je nou nog enige vorm van uitleg of onderbouwing gaf, allee. Maar gewoon een regel code dumpen en "veel mooier" roepen (wederom: zonder onderbouwing; wat is er dan mooier aan?) is niet constructief (en ook ongewenst in de Devschuur®)

(Daarbij werkt jouw code ook al niet :X :F ook jij mist een haakje...)
Why so serious.....

Ik reageer op iemand anders en als ik een haakje vergeet.. tja het was al laat :*)
Maar als toevoeging.

Python:
1
f.write(str('{} {}\n').format(key, value))

dankzij format() kan je values inladen in strings zonder dat je "string " + key + " string" hoeft te doen.
vervang "string " + key + " string" naar "string {} string".format(key) en je plakt een value op de plek van {}.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee