2015-09-30 8 views
5

ich Teil einer Zeichenkette (in fett) entfernen möchten unten, wird dies in der Zeichenfolge gespeichert oldstringregex python mit Unicode (japanische) Zeichen Ausgabe

[DMSM-8433] 加 護 亜 依 Kago Ai - 加 護 亜 依 vs. freitag

im mit dem folgenden regulären Ausdruck in python

p=re.compile(ur"([\W]+) (?=[A-Za-z ]+–)", re.UNICODE) 
newString=p.sub("", oldString) 

wenn i Ausgang des Neuerstring keine Ding hat

+0

'oldString' sollte ebenfalls in Unicode konvertiert werden. Ist es? Wie erhalten Sie es? Probieren Sie 'oldString = Unicode (oldString," utf-8 ")' bevor Sie 'p' deklarieren. –

+0

Was ist Ihre erwartete Ausgabe? – Kasramvd

+0

@Stribizhev Ich spezifiziere '# - * - Codierung: utf-8 - * -' an der Spitze der Datei, von dem, was ich gelesen habe, sollte es in Unicode konvertieren, ich bekomme es von Scraping einer HTML-Seite @ Kasramvd erwartete Ausgabe sollte sein "[DMSM-8433] Kago Ai - 加 護 亜 依 vs. FREITAG" –

Antwort

4

Sie das folgende Snippet verwenden, um das Problem zu lösen:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
import re 
str = u'[DMSM-8433] 加護亜依 Kago Ai – 加護亜依 vs. FRIDAY' 
regex = u'[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]+ (?=[A-Za-z ]+–)' 
p = re.compile(regex, re.U) 
match = p.sub("", str) 
print match.encode("UTF-8") 

Siehe IDEONE demo

Neben # -*- coding: utf-8 -*- Erklärung, ich habe @nhahtdh's character class to detect Japanese symbols hinzugefügt.

Beachten Sie, dass die match als UTF-8-Zeichenfolge "manuell" codiert werden muss, da Python 2 "erinnert" werden muss, arbeiten wir die ganze Zeit mit Unicode.

+1

Nur eine Anmerkung: Unter Windows in Python 2.x kann die '# coding: utf-8' Anweisung hinzugefügt werden, um die UTF8-Codierung für die Quelle zu erzwingen. –

0

entfernt Ich glaube, Sie einen regulären Ausdruck wie diese verwendet werden soll:

([\p{Hiragana}\p{Katakana}\p{Han}]+) 

bitte auch this documentation.

EDIT siehe: Getestet habe ich es auch here.

+0

Python re unterstützt keine Unicode-Eigenschaften. Natürlich gibt es [regex] (https://pypi.python.org/pypi/regex) Paket, aber Sie müssen es in der Antwort erwähnen. (Ich bin mir auch nicht ganz sicher, ob die obige Syntax im Regex-Paket akzeptiert würde) – nhahtdh

+0

das scheint mit PHP zu funktionieren, aber nicht mit Python, wenn man Python durchläuft ist Streifen "Kag" und "i" von "Kago Ai" –

+0

@nhahtdh re Paket im Moment verwenden, didnt, dass es ein anderes war, werde ich über den Link –

Verwandte Themen