我需要一个正则表达式来验证字符串中的一个或多个字符:
例如,这些字符串是valide:
D' argon calabrò
maryòn l' Ancol
这些字符串不是valide:
hello38239
my_house
work [tab] with me
我试过这个:
re.match(r“^ [a-zA-Z'òàèéìù] + $”,string)
它似乎在我的python shell中工作,但在Django中我收到此错误:
SyntaxError at /home/
("Non-ASCII character '\\xc3' ...
为什么?
编辑:
我在forms.py的顶部添加了# - - coding:utf-8 - - 但是带有à,è,ò,ù,é或ì的字符串不匹配从未
这是我的forms.py清理方法:
def clean_title(self):
if(re.match(r"^[a-zA-Z 'òàèéìù]+$", self.cleaned_data['title'].strip())):
return self.cleaned_data['title'].strip()
raise forms.ValidationError(_("This title is not valid."))
答案 0 :(得分:2)
如果您在python源文件中使用非ASCII字符,则应在源文件的顶部添加适当的编码,如下所示:
# -*- coding: utf-8 -*-
utf_string='čćžđšp'
Defining Python Source Code Encodings
这似乎对我很好:
>>> import re
>>> mystring = "D' argon calabrò"
>>> matched = re.match(r"^([a-zA-Z 'òàèéìù]+)$", mystring)
>>> print matched.groups()
("D' argon calabr\xc3\xb2",)
答案 1 :(得分:1)
那些,几乎都是非ascii字符。所以我认为它只使用ascii进行字符编码。也许您需要将其配置为使用UTF-8?