Mon fichier d'entrée a deux colonnes. J'essaie d'imprimer la deuxième colonne de inputdata1.txt
dans un délai d'une seconde pour la boucle. Mais mon code ne fonctionne pas. Quelqu'un peut-il me dire que dois-je faire?
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
Cela suppose que les colonnes sont séparées par des espaces.
Fonction split () peut spécifier différents séparateurs. Par exemple, si les colonnes étaient séparées par des virgules ,
, vous utiliseriez line.split(',')
dans le code ci-dessus.
REMARQUE: Utiliser with
pour ouvrir votre fichier le ferme automatiquement lorsque vous avez terminé ou si vous rencontrez un exception .
Vous pouvez faire quelque chose comme ça. Separator
est le caractère que votre fichier utilise pour séparer les colonnes, par exemple. des tabulations ou des virgules.
for line in open("inputfile.txt"):
columns = line.split(separator)
if len(columns) >= 2:
print columns[1]
Quick 'n dirty
Si AWK est installé:
# $2 for the second column
os.system("awk '{print $2}' inputdata1.txt")
Utilisation d'une classe
Faire un cours:
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
Si inputdata1.txt
ressemblerait à ceci:
hel Lo WOR Ld WOR LD hel Lo
Vous obtiendriez ceci:
print getCol('inputdata1.txt')[1]
#['lo', 'ld']
Notes complémentaires
pyawk
pour plus de fonctionnalités awksubprocess.Popen
getCol('inputdata1.txt', delim=", ")
filter
pour supprimer les valeurs vides ou supprimer le commentaire pass
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
Avec ce code, vous avez accès à toutes les colonnes de chaque ligne.