Python - Problem att läsa in lista
Redigerade in [code]-taggar (Python är rätt hopplöst att läsa utan dessa).
Hej!
jag har fastnat på ett säkert väldigt lätt problem men skulle uppskatta eran hjälp ändå.
Jag ska skapa en lista från en textfil som ser ut som följande
Format: datum, börskurs
Ericsson
02-08-01 7.15
02-08-02 6.72
02-08-05 5.56
Electrolux
02-08-01 167.50
02-08-02 165.50
02-08-05 154.00
AstraZeneca
02-08-01 339.50
02-08-02 360.50
02-08-05 353.00
Den första raden vill jag inte läsa in och sedan vill jag ha datum för ericsson som ett element och kursen som ett annat element osv för det andra aktierna.
Hur går jag tillväga med detta?
Tack på förhand
* Rubrik förtydligad //Mod *
Hej!
jag har fastnat på ett säkert väldigt lätt problem men skulle uppskatta eran hjälp ändå.
Jag ska skapa en lista från en textfil som ser ut som följande
Format: datum, börskurs
Ericsson
02-08-01 7.15
02-08-02 6.72
02-08-05 5.56
Electrolux
02-08-01 167.50
02-08-02 165.50
02-08-05 154.00
AstraZeneca
02-08-01 339.50
02-08-02 360.50
02-08-05 353.00
Den första raden vill jag inte läsa in och sedan vill jag ha datum för ericsson som ett element och kursen som ett annat element osv för det andra aktierna.
Hur går jag tillväga med detta?
Tack på förhand
Har du tänkt något själv? Hur ser ditt försök ut?
Har du tänkt något själv? Hur ser ditt försök ut?
Jag har skrivit denna kod men den är hårdkodad och skriver endast ut
---Teknisk analys för Ericsson
02-08-01 7.15
02-08-02 6.72
vilket inte är allt som filen innehåller under aktien ericsson
Koden (rätt lång):
class teknisk(object):
def __init__(self):
self.foretag = None
self.datum = None
self.kurs = None
def __str__(self):
s = "---Teknisk analys för " + self.foretag
s += self.datum
s += self.kurs
return s
#Funktion som läser in textfilen Kurser och tar bort första raden
def inlasFunktion2(textfil):
with open(textfil) as t:
lista = t.readlines()[1:]
#Skapar en lista med rätt element för den tekniska analysen
Kurslista = []
Alista = lista[0:68]
Blista = lista[68:135]
Clista = lista[136:]
Kurslista.append(Alista)
Kurslista.append(Blista)
Kurslista.append(Clista)
return(Kurslista)
#Här skapar vi själva listan för den fundamentala analysen
def skapaTekniskLista(Kurslista):
TekniskLista = []
for elements in Kurslista:
aktie = teknisk()
aktie.foretag = elements[0]
aktie.datum = elements[1]
aktie.kurs = elements[2]
TekniskLista.append(aktie)
return TekniskLista
#Huvudprogrammet
def main():
Kurslista = inlasFunktion2("kurser.txt")
TekniskLista = skapaTekniskLista(Kurslista)
print(TekniskLista[0])
main()
Jag är inte helt hundra på exakt hur du vill ha det, men här kommer ett försök funktion som läser in datan från filen och lägger den smidigt i en dictionary, med nyckeln satt till företaget och sedan en lista av tuples med alla datum. Funktionen för att skriva ut skriver egentligen bara ut den lagrade listan precis som den lästes in.
Informationen sparas enligt följande struktur:
{'Ericsson' : [(02-08-01, 7.15),
(02-08-02, 6.72),
(02-08-05, 5.56)],
'Electrolux' : ...
Koden (hoppas den är kommenterad ordentligt, annars är det bara fråga):
from datetime import datetime
def parse_file(file):
with open(file) as f:
content = f.readlines()
current_company = None
stock_data = {}
for line in content:
# strip() - Tar bort radbrytningstecken.
# split() - Delar upp strängen vid mellanslag
formatted_line = line.strip().split(' ')
# Försök parsea koden som ett datum, om det går är det ett datum, annars namnet på ett företag.
try:
# Om det går att parsea som datum, spara en tupel i dictionaryn för företaget: (datum, pris)
datetime.strptime(formatted_line[0], '%y-%m-%d')
stock_data[current_company].append((formatted_line[0], formatted_line[1]))
except ValueError:
# Här kommer du hamna när det inte går att parsea den första biten av strängen som ett datum,
# sätt då aktuellt företag till den inlästa raden.
current_company = ' '.join(formatted_line)
stock_data[current_company] = []
return stock_data
def print_data(stock_data):
for company in stock_data:
print("Teknisk analys för {}".format(company))
for date_price in stock_data[company]:
print("{}, {}".format(*date_price))
def main():
stock_data = parse_file('kurser.txt')
print_data(stock_data)
if __name__ == "__main__":
main()
Spelnyheter från FZ
Copyright © 1999–2025 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.