2
votes

Supprimer les sauts de ligne d'une cellule Excel à l'aide de Python

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:

 entrez la description de l'image ici

mais j'ai besoin de sortir comme ça entrez la description de l'image ici

Quelqu'un peut-il m'aider à supprimer les sauts de ligne sur le fichier Excel.

Merci d'avance.


0 commentaires

6 Réponses :


0
votes

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 ()


1 commentaires

essayé d'utiliser remplacer séparément également mais cela n'a pas fonctionné.



0
votes

Vous pouvez utiliser quelque chose comme ceci:

import re
re.sub("\n|\r", "", mystring)


0 commentaires

0
votes

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', ''))


1 commentaires

@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.



0
votes

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)


0 commentaires

0
votes

Vous devez remplacer \ t (Onglets). Cela vous mettra tous les enregistrements en ligne.

mystring = mystring.replace('\t','')


0 commentaires

0
votes

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.


0 commentaires