2011-01-24 35 views
5

Tôi đang gặp một vấn đề trên lồi của Python biểu thức chính quy, tôi đang làm những nỗ lực sau:Vấn đề với các nhân vật có dấu

import re 
ER = re.compile(r'\w', re.L) 
print(ER.sub('.','Maçã')) 

..çã 

Thậm chí sử dụng re.compile đi qua các miền địa phương như một cuộc tranh cãi, các điểm nhấn là không được công nhận. Có ai có vấn đề này không?

Cảm ơn!

+2

Có thể ai đó hiểu tiếng Brazil có thể dịch bài đăng này sang tiếng Anh? –

Trả lời

4

Bạn nên sử dụng cờ re.U unicode.

Nếu sử dụng Python 2.x bạn cũng cần phải xác định chuỗi như unicode, tức là

print(ER.sub('.', u'Maçã')) 
+0

Đối với tôi, điều này chỉ hoạt động cho python3 - trên 2.7, tôi nhận được '... . ' – Kimvais

+1

@Kimvais: Trong Python 2, bạn cũng có thể cần đánh dấu nó là chuỗi unicode: 'u'Maçã'' –

+0

Tôi đã cố gắng sử dụng re.U theo cách này, nhưng nó không hoạt động. Tôi có cùng một vấn đề. Tôi đã thử đặt vị trí mặc định của mình: locale.getdefaultlocale() , nó trả về >> ('pt_BR', 'UTF8') –

4

Từ http://www.regular-expressions.info/python.html

Theo mặc định, động cơ regex Python chỉ xem xét các chữ cái từ A đến Z, các chữ số từ 0 đến 9 và dấu gạch dưới là "ký tự từ". Chỉ định cờ re.L hoặc re.LOCALE để làm cho \ w khớp với tất cả các ký tự được coi là các chữ cái được gán cho các thiết lập miền địa phương hiện tại. Ngoài ra, bạn có thể chỉ định re.U hoặc re.UNICODE để xử lý tất cả các chữ cái từ tất cả các tập lệnh dưới dạng ký tự từ. Cài đặt này cũng ảnh hưởng đến ranh giới từ.

Hãy thử sử dụng re.UNICODE.

0

Tôi gặp sự cố! Tôi đã cố gắng sử dụng mã này trong trình bao. Vì vậy, tôi cần phải sử dụng theo cách này:

nhập lại ER = re.compile (r '\ w', re.L) ER.sub ('.', Unicode ('Maça', 'utf -8 '))

Cảm ơn bạn rất nhiều !!! :)

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