Die python2.x-Reihe ist verwirrend, da das str-Objekt und das Unicode-Objekt getrennt sind. Nachdem ich verschiedene Dinge recherchiert hatte, wurde es so. In der python3.x-Serie wird der Text als Unicode verarbeitet, daher scheint es einfacher zu sein.
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() #Lesen
lines2 = []
for line in lines:
line = string.replace(line,u'Text',u'text') #Text置換
line = re.sub(r'(\d)(?=(\d{3})+(?!\d))', r'\1', line) #Ersatz für reguläre Ausdrücke
lines2.append(line) #Erstellen Sie eine separate Liste
else:
f_out.write(string.join(lines2,'')) #Schreiben
f_in.close()
f_out.close()
test.txt
Dies ist Beispieltext.
Fügen Sie alle 3 Ziffern ein Komma ein.
iPad mini 36800 Yen
test_out.txt
Dies ist ein Beispieltext.
Fügen Sie alle 3 Ziffern ein Komma ein.
iPad mini 36,800 Yen
Nachtrag: Ich habe Code geschrieben, der mit Python3.3 funktioniert. Schließlich verwendet Python3 auch das Codecs-Modul: Wird das Ersetzen durch eine Funktion des str-Objekts durchgeführt und wird einfach kein u '' - Literal verwendet?
python
from __future__ import unicode_literals
Wenn Sie hinzufügen, werden alle Zeichenfolgen als Unicode behandelt, auch wenn kein u '' - Literal vorhanden ist. Es funktioniert normal mit Python2.6. Das könnte im Moment das Beste sein.
python
# coding: UTF-8
from __future__ import unicode_literals # <-Behandle alle Zeichenketten als Unicode. Nicht erforderlich für 3er
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() #Lesen
lines2 = []
for line in lines:
line = line.replace('Text','text') #Text置換
line = re.sub(r'(\d)(?=(\d{3})+(?!\d))', r'\1,', line) #Ersatz für reguläre Ausdrücke
lines2.append(line) #Erstellen Sie eine separate Liste
else:
f_out.write(''.join(lines2)) #Schreiben
f_in.close()
Recommended Posts