En data mining, le format des fichiers originaux est souvent frustrant. Une étape très importante consiste à organiser le format des fichiers de données.
Récemment, dans un projet que j'ai repris, le format du fichier de données fourni était tout simplement insupportable. Il ne pouvait pas être ouvert à l'aide de pandas, et il affichait toujours une erreur io. Après une inspection minutieuse, j'ai trouvé autant de lignes. des données du fichier se terminent par ", Cependant, d'autres lignes sont manquantes, le besoin est donc évident : vérifiez s'il y a "" à la fin de chaque ligne. Sinon, ajoutez-le simplement.
Il est préférable d'utiliser le flashback. Après tout, ce dont beaucoup de gens ont besoin, c'est juste d'une solution rapide, pas d'un pourquoi. La solution est la suivante :
b = open('b_file.txt', w) with open('a_file.txt', 'r') as lines: for line in lines: line = line.strip() if not line.endswith(r'"'): line += r'"' line += '\n' b.write(line) b.close() a.close()
La clé de tout le processus. est
line = line.strip()
J'étais paresseux avant et je l'ai utilisé directement, en omettant la ligne ci-dessus, en conséquence, je suis tombé sur la condition de jugement. Le programme pensait que chaque ligne ne se terminait pas par ":
.if not line.endswith(r'"')
Attendez. Essayez-le avec votre cuir chevelu et réécrivez :
for line in open(data_path+'heheda.txt', 'r'): if not line[-2] == r'"': print line line = line[:-1] + r'"' + line[-1:] print line
À ce stade, la condition de jugement est if not line[-2] == r'"', de sorte que vous pouvez obtenir le résultat correct sauf la dernière ligne. Comme nous le savons tous, dans le système Windows, le caractère de retour chariot du fichier est "rn". Par conséquent, lorsqu'il n'y a pas de strip() pour gérer le caractère de retour chariot, vous devez avancer manuellement d'un octet à la fin de. chaque ligne pour juger la fin de chaque ligne. Quant à la dernière ligne du fichier, elle ne se termine généralement pas par un caractère de retour chariot. Après tout, il n'est pas nécessaire de retourner à la ligne. Par conséquent, la ligne [-2] est positionnée au milieu du dernier caractère chinois et xxxx est écrit en dur sous la forme xx"xx, ce qui entraîne un affichage incorrect du dernier caractère.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!