J'ai un fichier qui contient la table de symboles details.Its
sous la forme de lignes et de colonnes.Analyse d'un fichier avec des données de colonne en Python
J'ai besoin d'extraire la première et la dernière colonne.
Comment puis-je faire cela?
J'ai un fichier qui contient la table de symboles details.Its
sous la forme de lignes et de colonnes.Analyse d'un fichier avec des données de colonne en Python
J'ai besoin d'extraire la première et la dernière colonne.
Comment puis-je faire cela?
Quel type de délimiteur utilisez-vous? Autrement dit, qu'est-ce qui sépare vos colonnes?
Je suppose que vous utilisez des virgules délimiteurs, comme ceci:
col1, col2, col3
col11, col12, col13
col21, col22, col23
col31, col32, col33
Le code suivant analysera et imprimer les première et dernière colonnes de chaque rangée:
# open file to read
f = file('db.txt', 'r')
# iterate over the lines in the file
for line in f:
# split the line into a list of column values
columns = line.split(',')
# clean any whitespace off the items
columns = [col.strip() for col in columns]
# ensure the column has at least one value before printing
if columns:
print "first", columns[0] # print the first column
print "last", columns[-1] # print the last column
Pour les fichiers CSV, vous devez utiliser le module csv. – habnabit
@Aaron, l'auteur n'a pas précisé qu'il utilise CSV, donc Soviut a présenté une bonne solution car elle montre ce qui se passe et peut donc être modifiée plus facilement. –
@Sovis: Utiliser "," est déroutant, car CSV est bien défini et n'est pas ceci. Utiliser "" est un meilleur choix car il ne chevauche pas CSV. –
Le Le moyen le plus pratique d'analyser les tables écrites dans des fichiers texte consiste à utiliser le csv module. Il prend en charge n'importe quel délimiteur et est plus pratique à utiliser que l'analyse manuelle ligne par ligne. Exemple:
import csv
def get_first_and_last_column(filename, separator):
with file(filename, 'rb') as file_obj:
for line in csv.reader(file_obj,
delimiter=separator, # Your custom delimiter.
skipinitialspace=True): # Strips whitespace after delimiter.
if line: # Make sure there's at least one entry.
yield line[0], line[-1]
if __name__ == '__main__':
for pair in get_first_and_last_column(r'c:\temp\file.txt', ';'):
print pair
Maintenant, si vous lui donnez un fichier comme ceci:
Edgar; Alan; Poe
John; Smith
Lots; of; whitespace; here
Il produira la sortie suivante:
('Edgar', 'Poe')
('John', 'Smith')
('Lots', 'here')
EDIT: paramètres personnalisés à csv.reader
peut être passé comme arguments de mot-clé, aussi (merci, nosklo!).
csv module est le moyen le plus simple. Vous pouvez utiliser un séparateur avec ce code:
import csv
def import_text(filename, separator):
for line in csv.reader(open(filename), delimiter=separator,
skipinitialspace=True):
if line:
yield line
for data in import_text('somefile.txt', '/'):
print (data)
Que fait "if line"? Ignorer les lignes vides? – pufferfish
pufferfish: oui. – nosklo
Selon la mise à jour, les colonnes sont séparés avec l'espace. Ce serait donc:
rawfile = open('details.Its', 'r')
table = [line.rstrip().split() for line in rawfile.readlines()]
newtable = [[line[0]]+[line[-1]] for line in table]
print(newtable)
Vous devrez décrire plus en détail le format de votre fichier "table de symboles". Est-ce du texte? Les "lignes" sont-elles terminées par des sauts de ligne (\ n)? Comment les colonnes sont-elles séparées? Largeur fixe? Des virgules? Les points-virgules Onglets? – bendin
colonnes sont séparés avec espace – user46646
S'il vous plaît modifier la question pour ajouter de nouveaux faits, @rejinacm. –