J'essaie de diviser les données existantes dans une colonne et de les stocker dans une nouvelle colonne
import csv print(dir(csv)) filename = "H:\\FairDealCustomerData.csv" csvout = "H:\\FairDealCustomerDataOUT.csv" with open(filename,"r",newline='') as file: file = ''.join([i for i in file]).replace("Mr.", "") file = ''.join([i for i in file]).replace("Miss.", "") file = ''.join([i for i in file]).replace("Mrs.", "") with open(csvout,"w",newline='') as outfile: outfile.writelines(file) outfile.close() Inputdata.csv Braund, Mr. Owen Harris ,1 Heikkinen, Miss. Laina ,0 Allen, Mr. William Henry ,0 Expecting_output.csv Braund,Owen Harris ,1,Mr Heikkinen,Laina ,0,Miss Allen,William Henry ,0,Mr
J'ai essayé et j'ai obtenu la fonctionnalité Rechercher et remplacer, mais je ne parviens pas à coder la recherche et le stocker dans une nouvelle colonne
**Inputdata.csv** Braund, Mr. Owen Harris ,1 Heikkinen, Miss. Laina ,0 Allen, Mr. William Henry ,0 **Expecting_output.csv** Braund,Owen Harris ,1,Mr Heikkinen,Laina ,0,Miss Allen,William Henry ,0,Mr
3 Réponses :
Utilisation d'expressions régulières pour extraire les différents groupes et les réorganiser comme vous le souhaitez.
Braund,Owen Harris ,1,Mr. Heikkinen,Laina ,0,Miss. Allen,William Henry ,0,Mr.
Résultat:
import re new_lines = [] with open('inputdata.txt', 'r') as file: for line in file: regex = re.compile(r'(\w+),\s?(Mr.|Miss.|Mrs.)\s(\w+\s?\w*\s),([01])') new_line = regex.findall(line)[0] print(f"{new_line[0]},{new_line[2]},{new_line[3]},{new_line[1]}")
Essayez ceci, même résultat que vous attendez.
import csv filename = "H:\\FairDealCustomerData.csv" csvout = "H:\\FairDealCustomerDataOUT.csv" with open(filename, 'r', newline='') as read_file: readCSV = csv.reader(read_file, delimiter=',') with open(csvout, 'w', newline='') as write_file: writer = csv.writer(write_file) for row in readCSV: writer.writerow([row[0], row[1].split('.')[1].strip() + ' ', row[2], row[1].split('.')[0].strip()])
Hourra, je l'ai compris grâce à @Kushan Gunasekera
import csv filename = "F:\\FairDealCustomerData.csv" csvout = "F:\\FairDealCustomerDataout.csv" with open(filename,'r',newline='') as read_file: readCSV = csv.reader(read_file, delimiter=',') with open(csvout,"w",newline='') as write_file: writer = csv.writer(write_file) for row in readCSV: writer.writerow([row[0], row[1].split('.')[1].strip() + ' ', row[2], row[1].split('.')[0].strip()]) write_file.close() ALERT:please do care about with and for functionalities other wise we will get ValueError: I/O operation on closed file
il est le bienvenu @prasanthG, et un autre que vous n'avez pas besoin de fermer lorsque vous ouvrez avec des instructions with
. Veuillez vérifier ces questions, La fermeture explicite des fichiers est-elle importante? , La fermeture est-elle nécessaire lors de l'utilisation d'itérateur sur un objet fichier Python et Pourquoi devrais-je fermer des fichiers en Python? . Got it bro? Vous n'avez donc pas besoin de le fermer.