4 svar
43 visningar
lund är nöjd med hjälpen!
lund 267
Postad: 19 nov 2020 Redigerad: 19 nov 2020

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 Online 480
Postad: 19 nov 2020 Redigerad: 19 nov 2020

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 267
Postad: 19 nov 2020 Redigerad: 19 nov 2020
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 11780
Postad: 19 nov 2020

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

lund 267
Postad: 19 nov 2020
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