Próbuję parsować plik rozdzielany potokami i przekazywać wartości do listy, aby później móc wydrukować wybrane wartości z listy.
Plik wygląda następująco:
name|age|address|phone|||||||||||..etc
Ma więcej niż 100 kolumn.
Odpowiedzi:
14 dla odpowiedzi № 1Jeśli "parsujesz" bardzo prosty plik, który nie zawiera żadnych |
znaki w rzeczywistych wartościach pola, możesz użyć split
:
fileHandle = open("file", "r")
for line in fileHandle:
fields = line.split("|")
print(fields[0]) # prints the first fields value
print(fields[1]) # prints the second fields value
fileHandle.close()
21 dla odpowiedzi nr 2
Użyj biblioteka csv.
Najpierw zarejestruj swój dialekt:
import csv
csv.register_dialect("piper", delimiter="|", quoting=csv.QUOTE_NONE)
Następnie użyj swojego dialektu na pliku:
with open(myfile, "rb") as csvfile:
for row in csv.DictReader(csvfile, dialect="piper"):
print row["name"]
3 dla odpowiedzi nr 3
import pandas as pd
pd.read_csv(filename,sep="|")
Spowoduje to zapisanie pliku w ramce danych. Dla każdej kolumny możesz zastosować warunki, aby wybrać wymagane wartości do wydrukowania. Wykonanie trwa bardzo krótko. Próbowałem z 111047 rzędami.