J'essaye de convertir un fichier Excel en fichier csv. les données du fichier Excel sont comme ci-dessous:
Mon code à convertir en csv:
import pandas as pd
import glob
for excel_file in glob.glob('C:/Talend/DEV/MARKET_OPTIMISATION/IMS/*Extract*.xls'):
print(excel_file)
data_xls = pd.read_excel(excel_file, 'Untitled', index=0,skiprows=1, sep='|',encoding='utf-8')
#data_xlx.pop
data_xls1=data_xls.replace('\r\n','')
data_xls1.to_csv('C:/Talend/DEV/MARKET_OPTIMISATION/IMS/IMS_Raw_data.csv',sep='|',encoding='utf-8')
La sortie du code ci-dessus est:
mais j'ai besoin de sortir comme ça
Quelqu'un peut-il m'aider à supprimer les sauts de ligne sur le fichier Excel.
Merci d'avance.
6 Réponses :
essayez de remplacer \ r et \ n séparément
mystring = mystring.replace('\n', ' ').replace('\r', '')
si cela échoue juste la chaîne .split () puis les éléments de la liste .join ()
essayé d'utiliser remplacer séparément également mais cela n'a pas fonctionné.
Vous pouvez utiliser quelque chose comme ceci:
import re
re.sub("\n|\r", "", mystring)
Dans votre dataframe, les nouvelles lignes se trouvent dans les noms de colonnes. Et les noms de colonne ne sont pas affectés lorsque vous utilisez la méthode replace du dataframe, seules les données le sont.
Donc, dans votre exemple, vous devez explicitement changer les noms de colonne:
data_xls = pd.read_excel(excel_file, 'Untitled', index=0,skiprows=1, sep='|',encoding='utf-8')
data_xls.columns = data_xls.columns.map(lambda x: x.replace('\r','').replace('\n', ''))
@Ballesta, je suis confronté à un autre problème ici. J'ai des données comme «NA» lors de la conversion du fichier xls en csv, il considère NA comme une valeur nulle. pouvez-vous s'il vous plaît suggérer comment lire les données telles quelles.
Vous devez utiliser regex = True dans votre commande, comme ci-dessous:
data_xls = data_xls.replace('\s', ' ', regex=True)
ou mieux serait de remplacer tout type d'espace blanc par un seul espace:
import re
data_xls = data_xls.replace('\n', ' ', regex=True)
Vous devez remplacer \ t (Onglets).
Cela vous mettra tous les enregistrements en ligne.
mystring = mystring.replace('\t','')
Vous devez remplacer \ t (Onglets).
Vous obtiendrez ainsi tous les enregistrements en ligne.
mystring = mystring.replace('\t','')
Vous pouvez coller une partie de vos données ici pour voir quels caractères sont cachés dans vos données.