[PYTHON] utf8 문제가있는 파이썬 정규식
PYTHONutf8 문제가있는 파이썬 정규식
나는 일반 utf-8 텍스트의 많은 줄을 포함하는 파일을 가지고있다. 아래에 의해,에 의해, 그것은 중국어입니다.
PROCESS:类型:关爱积分[NOTIFY] 交易号:2012022900000109 订单号:W12022910079166 交易金额:0.01元 交易状态:true 2012-2-29 10:13:08
파일 자체는 utf-8 형식으로 저장되었습니다. 파일 이름은 xx.txt입니다.
여기 내 파이썬 코드입니다, env는 python2.7입니다
#coding: utf-8
import re
pattern = re.compile(r'交易金额:(\d+)元')
for line in open('xx.txt'):
match = pattern.match(line.decode('utf-8'))
if match:
print match.group()
여기서 문제가되는 것은 결과가 없다는 것입니다.
交配 金額에서 10 진수 문자열을 얻고 싶습니다. 여기에는 0.01입니다. 0.01입니다.
이 코드가 작동하지 않는 이유는 무엇입니까? 아무도 나에게 그것을 설명 할 수 있을까? 나는 전혀 모른다.
해결법
-
==============================
1.코드에 몇 가지 문제가 있습니다. 먼저 re.compile (ur '<유니 코드 문자열>')을 사용해야합니다. 또한 re.UNICODE 플래그를 추가하는 것이 좋습니다 (정말로 필요한 경우 확실하지 않음). 다음은 \ d +가 일련의 숫자 만 처리하지 않기 때문에 \ d + \. \ d + (숫자, 아마 점과 숫자)를 사용해야한다는 것입니다. 예제 코드 :
코드에 몇 가지 문제가 있습니다. 먼저 re.compile (ur '<유니 코드 문자열>')을 사용해야합니다. 또한 re.UNICODE 플래그를 추가하는 것이 좋습니다 (정말로 필요한 경우 확실하지 않음). 다음은 \ d +가 일련의 숫자 만 처리하지 않기 때문에 \ d + \. \ d + (숫자, 아마 점과 숫자)를 사용해야한다는 것입니다. 예제 코드 :
#coding: utf-8 text = u"PROCESS:类型:关爱积分[NOTIFY] 交易号:2012022900000109 订单号:W12022910079166 交易金额:0.01元 交易状态:true 2012-2-29 10:13:08" import re pattern = re.compile(ur'交易金额:(\d+\.?\d+)元', re.UNICODE) print pattern.search(text).group(1)
-
==============================
2..match ()는 ^로 정규 표현식을 시작하는 것과 비슷하기 때문에 .search ()를 사용해야합니다. 즉, 문자열 시작 부분 만 검사합니다.
.match ()는 ^로 정규 표현식을 시작하는 것과 비슷하기 때문에 .search ()를 사용해야합니다. 즉, 문자열 시작 부분 만 검사합니다.
-
==============================
3.utf-8을 사용하는 경우 flags = re.LOCALE을 사용할 수 있습니다.
utf-8을 사용하는 경우 flags = re.LOCALE을 사용할 수 있습니다.
#coding: utf-8 import re pattern = re.compile(r'交易金额:(\d+\.?\d+)元', flags=re.LOCALE) for line in open('xx.txt'): match = pattern.match(line)
자세한 내용은 re.LOCALE을 참조하십시오. utf-8을 유니 코드로 변환 할 필요가 없습니다.
from https://stackoverflow.com/questions/10546442/python-regular-expression-with-utf8-issue by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] pandas에 rolling_apply를 사용하는 Python 사용자 정의 함수 (0) | 2018.11.18 |
---|---|
[PYTHON] 파이썬에서 fft bandpass 필터 (0) | 2018.11.18 |
[PYTHON] sparse_softmax_cross_entropy_with_logits를 사용하여 tensorflow에서 가중 크로스 엔트로피 손실을 구현하려면 어떻게해야합니까? (0) | 2018.11.18 |
[PYTHON] 파이썬 서브 프로세스의 파일 기술자 3에 쓴다. 객체를 열어 라. (0) | 2018.11.18 |
[PYTHON] 파이썬 - 특정 클래스에 의해 시작된 활성 스레드 수를 얻는 방법? (0) | 2018.11.18 |