4 svar
330 visningar
lund är nöjd med hjälpen
lund 529
Postad: 19 nov 2020 18:50 Redigerad: 19 nov 2020 19:04

Skriva en ny fil i Python

Hej, jag har helt fastnat på en uppgift där jag ska skriva en funktion annotated() som tar ett filnamn som parameter och skriver ut till en ny fil "out_annotated.txt" med originaltext, radnummer och totalt antal ord upp till och inklusive den raden - men jag får inte till det.

Jag har försökt fram och tillbaka så pass länge att jag nu egentligen inte har någonting att utgå ifrån, jag har fått enskilda saker att fungera bland annat har jag lyckats få python att skriva ut orden samt radnummer för en fil med kodningen:

def annotated(filename):
      with open(filename, 'r') as f:
              for i, line in enumerate(f, start=1):
                       print('{} {}'.format(i, line.strip()))

Men det saknas fortfarande antalet ord och att jag ska få det skriver över i en ny txt.fil. All hjälp uppskattas!

Edit: För att förtydliga vill jag från txt.filen:

hej du 
luft eld vind vatten
ett väldigt stort berg här

ha en ny fil där det står:

hej du 1 2
luft eld vind vatten 2 6
ett väldigt stort berg här 3 11

Aerius 504 – Fd. Medlem
Postad: 19 nov 2020 19:40 Redigerad: 19 nov 2020 19:40

Om du tror  det finns tillräckligt med ram minne kan du spara allt i en string. Sen öppnar du en ny fil och skriver strängen dit. Jättebra start. Du behöver inte ändra något du gjort hittills för att komma vidare (utom print då).

En variabel som håller antalet ord skulle underlätta.

lund 529
Postad: 19 nov 2020 19:52 Redigerad: 19 nov 2020 19:52
Aerius skrev:

Om du tror  det finns tillräckligt med ram minne kan du spara allt i en string. Sen öppnar du en ny fil och skriver strängen dit. Jättebra start. Du behöver inte ändra något du gjort hittills för att komma vidare (utom print då).

En variabel som håller antalet ord skulle underlätta.

Stort tack Aerius!

Jag la till num_words=0 (och num_words += len(line.split()) och la även till num_word I print funktionen. Men då får jag endast upp hur många ord det är per rad och inte totalt antal ord fram till och inklusive den raden, vad saknar jag då? Här nedan bifogar jag den nya kodningen:

Laguna Online 28549
Postad: 19 nov 2020 19:57

Nu sätter du num_words till 0 hela tiden. Flytta upp det till början av funktionen. 

lund 529
Postad: 19 nov 2020 19:59
Laguna skrev:

Nu sätter du num_words till 0 hela tiden. Flytta upp det till början av funktionen. 

Tack Laguna! Nu blev siffrorna rätt!

Svara Avbryt
Close