Mój plik wejściowy ma dwie kolumny. Próbuję wydrukować drugą kolumnę inputdata1.txt
w ciągu drugiej pętli for. Ale mój kod nie działa. Czy ktoś może mi powiedzieć, co powinienem zrobić?Python - Czytaj drugą kolumnę z pliku
Odpowiedz
Możesz zrobić coś takiego. Separator
to znak używany przez twój plik do rozdzielania kolumn, np. karty lub przecinki.
for line in open("inputfile.txt"):
columns = line.split(separator)
if len(columns) >= 2:
print columns[1]
with open('inputdata1.txt') as inf:
for line in inf:
parts = line.split() # split line into parts
if len(parts) > 1: # if at least 2 parts/columns
print parts[1] # print column 2
Zakłada się, że kolumny są oddzielone odstępami.
Funkcja split() może określić różne separatory. Na przykład, jeśli kolumny były oddzielone przecinkami ,
, użyłbyś kodu line.split(',')
w powyższym kodzie.
UWAGA: Korzystanie with
otworzyć plik automatycznie zamyka to gdy skończysz, lub w przypadku wystąpienia wyjątek.
'.strip() 'jest zbędny, jeśli następuje po nim' line.split() ' –
Szybkie „n brudny
Jeśli AWK jest zainstalowany:
# $2 for the second column
os.system("awk '{print $2}' inputdata1.txt")
Korzystanie klasę
Zrób Klasa:
class getCol:
matrix = []
def __init__(self, file, delim=" "):
with open(file, 'rU') as f:
getCol.matrix = [filter(None, l.split(delim)) for l in f]
def __getitem__ (self, key):
column = []
for row in getCol.matrix:
try:
column.append(row[key])
except IndexError:
# pass
column.append("")
return column
Jeśli inputdata1.txt
wyglądałby następująco:
hel lo wor ld wor ld hel lo
co można uzyskać to:
print getCol('inputdata1.txt')[1]
#['lo', 'ld']
Dodatkowe noty
- Można użyć
pyawk
więcej funkcji awk - Jeśli używasz szybkiej obsługi „n metoda brudną korzystanie
subprocess.Popen
- Można zmienić separator
getCol('inputdata1.txt', delim=", ")
- Zastosowanie
filter
usunąć puste wartości lub Odkomentujpass
f = open("file_to_read.txt") # open your file
line = f.readline().strip() # get the first line in line
while line: # while a line exists in the file f
columns = line.split('separator') # get all the columns
while columns: # while a column exists in the line
print columns # print the column
line = f.readline().strip() # get the next line if it exists
Z tym kodem, masz dostęp do wszystkich kolumn każdej linii.
- 1. QSplitter: Jak zmniejszyć drugą kolumnę?
- 2. Czytaj xml z pliku
- 3. Czytaj pływaki z pliku .txt
- 4. Czytaj stdin z inlined python bash
- 5. Jak uzyskać drugą kolumnę z danych wyjściowych polecenia? Wyjście
- 6. PHP: Czytaj z pewnego punktu w pliku
- 7. Czytaj z określonego miejsca w pliku C++
- 8. Czytaj tylko pierwszy wiersz z pliku tekstowego
- 9. Czytaj w danych z pliku JSON
- 10. Czytaj pliku właściwości w powershell
- 11. Jak podzielić wartość kolumny pandy przez drugą kolumnę
- 12. Jak mogę zamówić ramkę danych przez drugą kolumnę w R?
- 13. Czytaj zmienną z Web.Config
- 14. Python - Manipuluj i czytaj przeglądarkę z bieżącej przeglądarki
- 15. asio :: czytaj z timeoutem
- 16. Pliku pliku tekstowego z Python
- 17. Czytaj konkretnych bajtów pliku w Pythonie
- 18. Czytaj zawartość pliku tekstowego co 15 sekund
- 19. Czytaj lokalny XML z JS
- 20. Czytaj tylko część pliku z dysku w celu-c
- 21. Czytaj linie z pliku tekstowego, ale pomiń pierwsze dwie linie.
- 22. Jak dodać kolumnę z pliku do innego pliku
- 23. pliku z Python
- 24. Czytaj w pliku - zmień zawartość - zapisz do tego samego pliku
- 25. Czytaj plik do postaci
- 26. Czytaj dwie linie tekstu po linii jednocześnie -python
- 27. Zastąp kolumnę w jednym pliku kolumną innego przy użyciu awk?
- 28. Czytaj MP3 w Pythonie 3
- 29. Usuwanie pliku tylko z obiektu pliku python
- 30. Czytaj tylko konkretny arkusz
Czy możesz pokazać kod? – jsalonen
Powinieneś pokazać kod, który "_is is working_" i wyjaśnić, co "_is not working_" oznacza bardziej szczegółowo. – Tadeck
Dodatkowo możesz wyjaśnić, w jaki sposób kolumny są oddzielone w pliku inputdata1.txt – dckrooney