Ich konvertiere CSV-Dateien in Python Dataframe. Und in der Originaldatei hat eine der Spalten die Zeichen em-strich. Ich möchte es durch Bindestrich "-" ersetzen.konvertieren Em-Bindestrich in Bindestrich in Python
Teiloriginaldatei von csv:
NoDemande NoUsager Sens IdVehicule NoConduteur HeureDebutTrajet HeureArriveeSurSite HeureEffective'
42192001801 42192002715 — 157Véh 42192000153 ...
42192000003 42192002021 + 157Véh 42192000002 ...
42192001833 42192000485 — 324My3FVéh 42192000157 ...
Mein Code:
#coding=latin-1
import pandas as pd
import glob
pd.set_option('expand_frame_repr', False)
path = r'D:\Python27\mypfe\data_test'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_,index_col=None,header=0,sep=';',parse_dates=['HeureDebutTrajet','HeureArriveeSurSite','HeureEffective'],
dayfirst=True)
df['Sens'].replace(u"\u2014","-",inplace=True,regex=True)
list_.append(df)
Und es überhaupt nicht jedes Mal funktioniert, ist es sie nur in ?
umwandeln, die, wie es aussieht:
42191001122 42191002244 ? 181Véh 42191000114 ...
42191001293 42191001203 ? 319M9pVéh 42191000125 ...
42191000700 42191000272 ? 183Véh 42191000072 ...
Und weil ich französische Zeichen in der Datei habe, verwende ich latin-1
anstelle von utf-8
. Wenn ich die erste Zeile löschen und schreiben wie folgt aus:
df = pd.read_csv(file_,index_col=None,header=0,sep=';',encoding='windows-1252',parse_dates=['HeureDebutTrajet','HeureArriveeSurSite','HeureEffective'],
dayfirst=True)
Das Ergebnis wird sein:
42191001122 42191002244 â?? 181Véh 42191000114 ...
42191001293 42191001203 â?? 319M9pVéh 42191000125 ...
42191000700 42191000272 â?? 183Véh 42191000072 ...
Wie kann ich alle em-dash machen —
durch -
ersetzt?
habe ich den Teil über repr
:
for line in open(file_):
print repr(line)
Und das Ergebnis stellt sich heraus:
'"42191002384";"42191000118";"\xe2\x80\x94";"";"42191000182";...
'"42191002464";"42191001671";"+";"";"42191000182";...
'"42191000045";"42191000176";"\xe2\x80\x94";"620M9pV\xc3\xa9h";"42191000003";...
'"42191001305";"42191000823";"\xe2\x80\x94";"310V7pV\xc3\xa9h";"42191000126";...
Diese 'repr'-Ausgabe iteriert über die Zeichen des Dateinamens, nicht die Zeilen in der eigentlichen Datei, also ist es nicht sehr nützlich. Verwenden Sie stattdessen 'for line in open (file_)', um nützlichere Ergebnisse zu erhalten (Sie sollten einige Beispielzeilen aus der Ausgabe auswählen, um sie der Frage hinzuzufügen, anstatt alle einzubeziehen). – Blckknght