Traitement de texte UTF8 avec python

La série python2.x prête à confusion car l'objet str et l'objet unicode sont séparés. Après avoir recherché diverses choses, c'est devenu comme ça. Dans la série python3.x, le texte est traité en Unicode, donc cela semble plus facile.

MacOS X 10.6.8 Python 2.6.1

python


# coding: UTF-8

import codecs
import string
import re

f_in  = codecs.open('test.txt', 'r', 'utf-8')
f_out = codecs.open('test_out.txt', 'w', 'utf-8')

lines = f_in.readlines() #Lis
lines2 = []
for line in lines:
	line = string.replace(line,u'texte',u'text') #texte置換
	line = re.sub(r'(\d)(?=(\d{3})+(?!\d))', r'\1', line) #Remplacement d'expression régulière
	lines2.append(line) #Faites une liste séparée
else:
	f_out.write(string.join(lines2,'')) #l'écriture
	f_in.close()
	f_out.close()

test.txt


Ceci est un exemple de texte.
Insérez une virgule tous les 3 chiffres.
iPad mini 36800 yens

test_out.txt


Ceci est un exemple de texte.
Insérez une virgule tous les 3 chiffres.
iPad mini 36,800 yens

Post-scriptum: J'ai écrit du code qui fonctionne avec python3.3. Après tout, python3 utilise également le module codecs, Le remplacement est-il effectué par une fonction de l'objet str et simplement pas en utilisant u '' littéral?

python


from __future__ import unicode_literals

Si vous ajoutez, toutes les chaînes seront traitées comme unicode même s'il n'y a pas de littéral u ''. Cela fonctionne normalement avec python2.6. C'est peut-être le meilleur pour le moment.

python


# coding: UTF-8
from __future__ import unicode_literals # <-Traitez toutes les chaînes de caractères comme unicode. Non requis pour la série 3
import codecs
import re

f_in  = codecs.open('test.txt', 'r', 'utf-8')
f_out = codecs.open('test_out.txt', 'w', 'utf-8')

lines = f_in.readlines() #Lis
lines2 = []
for line in lines:
    line = line.replace('texte','text') #texte置換
    line = re.sub(r'(\d)(?=(\d{3})+(?!\d))', r'\1,', line) #Remplacement d'expression régulière
    lines2.append(line) #Faites une liste séparée
else:
    f_out.write(''.join(lines2)) #l'écriture
    f_in.close()

Recommended Posts

Traitement de texte UTF8 avec python
Traitement de texte avec Python
Texte de cluster en Python
Traitement de fichiers en Python
Traitement multithread en python
Traitement des requêtes en Python
Traitement asynchrone (threading) en python
Parler avec Python [synthèse vocale]
Collection de traitement d'image en Python
Utilisation du mode Python dans le traitement
Traitement du signal en Python (1): transformée de Fourier
GOTO en Python avec Sublime Text 3
100 Language Processing Knock Chapitre 1 en Python
Ouvrez UTF-8 avec BOM en Python
Extraire du texte d'images avec Python
Trier les gros fichiers texte en Python
Lire et écrire du texte en Python
Quadtree en Python --2
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
traitement d'image python
Méta-analyse en Python
Unittest en Python
Pour définir le codage par défaut sur utf-8 en python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
Traitement de fichiers Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Traitez facilement des images en Python avec Pillow
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Essayez de fouiller votre journal avec Python
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Traitement des interdictions en double dans la banque de données GAE / Python
Réflexion en Python
Chimie avec Python
Hashable en Python