Python ja ikävä homma.

Olen yrittänyt tehdä ohjelmaa joka tulostaisi listalla olevat tuotteet alekkain ilman harmittavan haitallista väliä. Tuo "\n" varmaan luo ylimääräisen välin? Saanko tätä millään toimimaan ilman "\n" merkkiä, tai onko jokin muu keino saada tuo väli pois?

Kiitos kaikille.

tobuy = ['milk\n', 'butter\n', 'coffee beans\n', 'arugula\n']
tiedosto = open('list.txt', 'w')
tiedosto.writelines(tobuy) # .writelines(list)
tiedosto.close()

tiedosto = open('list.txt')
marylines = tiedosto.readlines() # Using .read()
tiedosto.close()
print(marylines)
for a in range (3):
elain = marylines[a]

print(elain)

Näyttää tältä:

['milk\n', 'butter\n', 'coffee beans\n', 'arugula\n']

milk

butter

coffee beans
13282
Äänestä

Muut lukivat myös

Vastaukset 13

Vanhimmat

print(elain, end="")

Äänestä
  • Python 3:lla noin.

    Äänestä

  • Tuotakin kokeilin mutta ei auttanut.
    Python ja IDLE 3.2.3 ja Windows

    Miksiköhän? ....

    Löytyikin vastaus:
    "Old: print x, # Trailing comma suppresses newline
    New: print(x, end=" ") # Appends a space instead of a newline"

    https://docs.python.org/3.0/whatsnew/3.0.html

    Äänestä

Affiliate, linkki ei toimi, voitko tsekata mistä johtuu.

Äänestä
  • Se johtu siitä että tuli käytettyä tuota Geanyn omaa pastebin palvelua, ja se pitää koodin oletuksena tavoitettavissa vain 45 min.

    Mutta nyt sitten paikassa mistä ei häviä ikinä: http://pastebin.com/s9ngdbEv
    Jatkossa pistänkin kaiken jaettavan tuonne, mikäli tuo ilmainen tili antaa myötä jakaa tarpeeksi.

    Muuten mitä python versiota käytät, minä kirjottelen 2 versiolla, koska nuo Tkinterin graaffiset lomakkeet ei toimi 3 versiossa.

    Nämä ohjelman ensimmäiset rivit kertovat millä tulkilla ohjelma toimii

    #!/usr/bin/env python3 = Python3
    #!/usr/bin/env python = Python 2 (yleisesti käytössä)

    Äänestä

  • Minulla toimii kolmosversiossa. Erona näyttää ainakin olevan että esinnäkin pitää kirjoittaa pienellä (from tkinter import *) ja yhdessä antamassasi esimerkissä piti vaihtaa hieman koodia (vaikken tiedä miksi)
    Taisi olla tämä:


    import tkinter
    from tkinter import *
    #from ScrolledText import *
    from tkinter.scrolledtext import ScrolledText

    Löytyisikö tuohonkin jokin changelogi

    ps. kiitos esimerkeistä!

    Äänestä

  • toimivat 3:ssa

    from tkinter.scrolledtext import ScrolledText #toimii
    from tkinter.scrolledtext import * #toimii

    Äänestä

  • täällätoimii kirjoitti:

    Minulla toimii kolmosversiossa. Erona näyttää ainakin olevan että esinnäkin pitää kirjoittaa pienellä (from tkinter import *) ja yhdessä antamassasi esimerkissä piti vaihtaa hieman koodia (vaikken tiedä miksi)
    Taisi olla tämä:


    import tkinter
    from tkinter import *
    #from ScrolledText import *
    from tkinter.scrolledtext import ScrolledText

    Löytyisikö tuohonkin jokin changelogi

    ps. kiitos esimerkeistä!

    http://python-future.org/compatible_idioms.html

    jotain

    Äänestä

Hei, minulla taitaa olla 3.5.2

Kiitos vastauksista, tuo selvisi, mutta en pystynytkään soveltamaan neuvoa seuraavassa esimerkissä.


Button(avaa_kirjaikkuna, text=kirjalista[laskin], command=Kirja).grid(row=laskin 2, column=0, sticky=W, pady=4)

Kun tuossa ensimmäisessä esimerkissä tallensin nämä tuotteet listaan: tobuy = ['milk\n', 'butter\n', 'coffee beans\n', 'arugula\n'], niin sen joutui tekemään tuolla "\n" merkillä, jotta voisin hakea ne myöhemmin avattavaan listaani tallennuksen jälkeen.

Ongelma muodostuu siinä, kun haluaisin käyttää samaa keinoa buttonissa "text=kirjalista[laskin]. Tuo "\n" aiheuttaa sen, että painikkeesta tulee kaksi merkkiä korkea ja olisin toivonut siitä vain yhden merkin korkuista.

Onkohan tähän mitään keinoa, osasinko selittää asian?

Kiitos kaikille.

Äänestä
  • Painikkeen muotoilu esimerkki

    http://pastebin.com/rcH2trZ6

    Esimerkki on suoraan verkosta, johon olen vain lisännyt tuon sinun listasta otettavan Caption tekstin trimmattuna .strip() funktiolla. Tuo käsky poistaa ei näkyvät merkit, merkkijonon alusta ja lopusta.

    Äänestä

Kiitos sinulle, ole tosi etevä.

Äänestä

Kommentoi aloitusta


Apua_tarvitaan kirjoitti:

Olen yrittänyt tehdä ohjelmaa joka tulostaisi listalla olevat tuotteet alekkain ilman harmittavan haitallista väliä. Tuo "\n" varmaan luo ylimääräisen välin? Saanko tätä millään toimimaan ilman "\n" merkkiä, tai onko jokin muu keino saada tuo väli pois?

Kiitos kaikille.

tobuy = ['milk\n', 'butter\n', 'coffee beans\n', 'arugula\n']
tiedosto = open('list.txt', 'w')
tiedosto.writelines(tobuy) # .writelines(list)
tiedosto.close()

tiedosto = open('list.txt')
marylines = tiedosto.readlines() # Using .read()
tiedosto.close()
print(marylines)
for a in range (3):
elain = marylines[a]

print(elain)

Näyttää tältä:

['milk\n', 'butter\n', 'coffee beans\n', 'arugula\n']

milk

butter

coffee beans

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu