2015-09-30 11 views
5

Chcę usunąć część napisu (wytłuszczone) poniżej, to jest przechowywany w ciągu oldStringregex python z emisji (japoński) Unicode

[DMSM-8433] 加 護 亜 依 Kago Ai - 加 護 亜 依 vs. PIĄTEK

im przy następujące wyrażenia regularnego w ciągu pytona

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

kiedy wyjście newString nr sprawa została usunięta

+0

'oldString' również powinien zostać przekonwertowany na Unicode. Czy to jest? Jak ją zdobyć? Wypróbuj 'oldString = unicode (oldString," utf-8 ")' przed zadeklarowaniem 'p'. –

+0

Jakie są twoje oczekiwane wyniki? – Kasramvd

+0

@stribizhev i określam '# - * - coding: utf-8 - * -' na górze pliku, z tego, co czytałem, powinienem przekonwertować go do unicode, otrzymuję go od zeskanowania strony HTML @ Oczekiwany wynik Kasramvd powinien wynosić "[DMSM-8433] Kago Ai - 加 護 亜 依 vs. PIĄTEK" –

Odpowiedz

4

Można użyć następującego fragmentu kodu, aby rozwiązać problem:

#!/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") 

Zobacz IDEONE demo

Obok # -*- coding: utf-8 -*- deklaracji Dodałem @nhahtdh's character class to detect Japanese symbols.

Pamiętaj, że kod match musi być zakodowany jako ciąg znaków UTF-8 "ręcznie", ponieważ Python 2 wymaga "przypomnienia", że cały czas pracujemy z Unicode.

+1

Tylko uwaga: w systemie Windows, w Pythonie 2.x, można dodać instrukcję '# coding: utf-8' w celu wymuszenia kodowania UTF8 dla źródła. –

0

myślę, że należy użyć wyrażenia regularnego jak ten:

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

patrz też this documentation.

EDIT: ja również przetestowane here.

+0

Python ponownie nie obsługuje właściwości Unicode. Oczywiście istnieje pakiet [regex] (https://pypi.python.org/pypi/regex), ale trzeba o tym wspomnieć w odpowiedzi. (Nie jestem też całkiem pewien, czy powyższa składnia zostanie zaakceptowana w pakiecie regex) – nhahtdh

+0

, który wydaje się działać z PHP, ale nie z Pythonem, podczas uruchamiania przez Pythona paski "Kag" i "i" z "Kago Ai" –

+0

@nhahtdh używając ponownie pakietu w tej chwili, nie zdawałem sobie sprawy, że był inny, będę czytać przez link –