문자열 묶음에서 중국어를 제거하고 간단한 파이썬 정규식을 찾고있었습니다. 어떤 제안?Python과 Regex를 사용하여 문자열의 모든 중국어 텍스트 찾기
답변
(단지 좁은 유니 코드로 표현할 수 65535 게이트 쌍을 통해 구축> 제외 서수)
RE = re.compile(u'[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〺〻㐀-䶵一-鿃豈-鶴侮-頻並-龎]', re.UNICODE)
nochinese = RE.sub('', mystring)
RE 빌드를위한 코드 및 넓은 빌드의 경우 supplementary plane에서 중국어 문자를 감지해야하는 경우 :
# -*- coding: utf-8 -*-
import re
LHan = [[0x2E80, 0x2E99], # Han # So [26] CJK RADICAL REPEAT, CJK RADICAL RAP
[0x2E9B, 0x2EF3], # Han # So [89] CJK RADICAL CHOKE, CJK RADICAL C-SIMPLIFIED TURTLE
[0x2F00, 0x2FD5], # Han # So [214] KANGXI RADICAL ONE, KANGXI RADICAL FLUTE
0x3005, # Han # Lm IDEOGRAPHIC ITERATION MARK
0x3007, # Han # Nl IDEOGRAPHIC NUMBER ZERO
[0x3021, 0x3029], # Han # Nl [9] HANGZHOU NUMERAL ONE, HANGZHOU NUMERAL NINE
[0x3038, 0x303A], # Han # Nl [3] HANGZHOU NUMERAL TEN, HANGZHOU NUMERAL THIRTY
0x303B, # Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
[0x3400, 0x4DB5], # Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400, CJK UNIFIED IDEOGRAPH-4DB5
[0x4E00, 0x9FC3], # Han # Lo [20932] CJK UNIFIED IDEOGRAPH-4E00, CJK UNIFIED IDEOGRAPH-9FC3
[0xF900, 0xFA2D], # Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900, CJK COMPATIBILITY IDEOGRAPH-FA2D
[0xFA30, 0xFA6A], # Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30, CJK COMPATIBILITY IDEOGRAPH-FA6A
[0xFA70, 0xFAD9], # Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70, CJK COMPATIBILITY IDEOGRAPH-FAD9
[0x20000, 0x2A6D6], # Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000, CJK UNIFIED IDEOGRAPH-2A6D6
[0x2F800, 0x2FA1D]] # Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800, CJK COMPATIBILITY IDEOGRAPH-2FA1D
def build_re():
L = []
for i in LHan:
if isinstance(i, list):
f, t = i
try:
f = unichr(f)
t = unichr(t)
L.append('%s-%s' % (f, t))
except:
pass # A narrow python build, so can't use chars > 65535 without surrogate pairs!
else:
try:
L.append(unichr(i))
except:
pass
RE = '[%s]' % ''.join(L)
print 'RE:', RE.encode('utf-8')
return re.compile(RE, re.UNICODE)
RE = build_re()
print RE.sub('', u'美国').encode('utf-8')
print RE.sub('', u'blah').encode('utf-8')
인터넷에서 이것을 알아 냈고 완벽하게 작동하는 것 같습니다.
#!/usr/bin/env python
# -*- encoding: utf8 -*-
import re
sample = u'I am from 美国。We should be friends. 朋友。'
for n in re.findall(ur'[\u4e00-\u9fff]+',sample):
print n
출력 : 좁은 유니 코드 짧고 비교적 광범위한 않음 파이썬 빌드
美国
朋友
일부 중국어 문자는 UTF-16으로 인코딩 될 때 서로 게이트 쌍이므로 모든 중국어 문자에 대해 작동하지 않습니다. (당신이 \ u4e00을 사용하고 있기 때문에 UTF-16 인 것처럼 보입니다.) –
@Stephen : 이것은 사실이지만, BMP 외부의 한자는 현대의 중국어 글쓰기에서 사용되지 않는 크게 변형 된/역사적인 형태입니다. 그건 중요하지 않을거야. Prairiedogg가 신경 쓰지 않는 다른 잠재적 인 문제 : 위의 예에서 볼 수 있듯이 코드는 한자를 추출하지만 중국어 구두점은 무시합니다. 그것은 또한 다양한 다른 중국어 기호 (원 문자 등)를 무시합니다; 그리고 그것은 일본어 본문에 이상하고 끔찍한 일을 할 것입니다. – Porculus
실제로 데이터 세트를 작업하면서 TokenMacGuy가 정확하다고 생각합니다. 저는 라틴어가 아닌 모든 것을 제거하려고합니다. – Prairiedogg
- 1. Regex를 사용하여 파일에서 값 찾기
- 2. 문자열의 하위 문자열의 모든 인스턴스 찾기
- 3. Regex를 사용하여 문자열의 초과 공백을 제거하는 방법
- 4. GREP/RegEx를 사용하여 문자열 찾기 및 바꾸기
- 5. Python과 "re"
- 6. Regex를 사용하여 MySQL 텍스트 추출
- 7. NewLISP를 사용하여 중국어 파일 이름 속성 찾기?
- 8. indexof를 사용하여 문자열의 패턴 찾기
- 9. RegEx를 사용하여 double 찾기 및 바꾸기
- 10. 문자열의 동일한 부분에 regex를 제외하십시오.
- 11. ElementTree/lxml로 텍스트 문자열의 상위 태그 찾기
- 12. 파일에서 텍스트 찾기 (C#)
- 13. vbscript를 사용하여 중국어 문자를 텍스트 파일에 작성하십시오.
- 14. 애플릿에 중국어 텍스트 표시
- 15. Regex를 사용하여 BBcode로 둘러싸여 있지 않은 문자열 찾기
- 16. gsub 및 regex를 사용하여 루비 문자열의 특정 이스케이프 문자 제거
- 17. regex를 사용하여 유니 코드 텍스트 검색
- 18. RegEx를 사용하여 모든 매개 변수 추출
- 19. RegEx를 사용하여 문자열 유효성 검사
- 20. 중국어 텍스트 사용 제어 허용
- 21. Ruby에서 문자열의 문자 찾기
- 22. 문자열의 중국어 (멀티 바이트) 문자를 검색합니다.
- 23. .NET RegEx를 사용하여 두 번째 '-'다음에 오는 문자열의 일부를 검색합니다.
- 24. as3에서 RegEx를 사용하여 문자열의 링크를 찾는 방법은 무엇입니까?
- 25. C에서 RegEx를 사용하여 문자열의 쉼표로 구분 된 부분을 추출합니다.
- 26. Python에서 regex를 사용하여 두 문자열의 HTML 태그를 일치 시키십시오.
- 27. Ada에서 문자열의 문자 찾기
- 28. RegEx를 사용하여 특정 HTML 태그 찾기 및 바꾸기
- 29. Regex를 찾고
- 30. vb.net 및 RegEx를 사용하여 중첩 문자열 내부에서 문자열 찾기
정말 중국어를 제거 하시겠습니까, 아니면 정말로 라틴어가 아닌 모든 것을 제거 하시겠습니까? – SingleNegationElimination
중국어 문자를 번역하는 대신 문자열에서 제거해야하는 이유는 무엇입니까 (유용합니까)? –