2015-09-10 17 views
9

Các Python re mô-đun của documentation nói rằng khi cờ re.UNICODE được thiết lập, '\s' sẽ phù hợp:Python regex ' s' không phù hợp BOM unicode (U + FEFF)

bất cứ điều gì được phân loại là không gian trong Cơ sở dữ liệu thuộc tính ký tự Unicode.

Tôi có thể nói, BOM (U + FEFF) là classified as a space.

Tuy nhiên:

re.match(u'\s', u'\ufeff', re.UNICODE) 

đánh giá để None.

Đây có phải là lỗi trong Python hay tôi thiếu gì đó không?

Trả lời

13

U + FEFF không phải là ký tự khoảng trắng theo cơ sở dữ liệu unicode.

Wikipedia chỉ liệt kê danh sách vì đó là "ký tự liên quan". Chúng tương tự như các ký tự khoảng trống nhưng không có thuộc tính WSpace trong cơ sở dữ liệu.

Không có ký tự nào trong số đó phù hợp với \s.

+0

'len ([c cho c trong bản đồ (chr, range (sys.maxunicode + 1)) nếu unicodedata.category (c) == 'Cf' và c.isspace()])' là số không. – jfs

Các vấn đề liên quan