Introduction à la méthode d'utilisation de python pour lire et écrire des fichiers contenant des caractères chinois et ajouter des caractères spécifiques à la fin

高洛峰
Libérer: 2017-03-20 13:07:40
original
1611 Les gens l'ont consulté

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()
Copier après la connexion

La clé de tout le processus. est

line = line.strip()
Copier après la connexion

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'"')
Copier après la connexion

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
Copier après la connexion

À 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal