2013-01-23 32 views
1

我有一些missunderstanding与编码正则表达式:simplejson - 编码正则表达式 d +

>>> simplejson.dumps({'title':r'\d+'}) 
'{"title": "\\\\d+"}' 
>>> simplejson.loads('{"title": "\\\\d+"}') 
{u'title': u'\\d+'} 
>>> print simplejson.loads('{"title": "\\\\d+"}')['title'] 
\d+ 

所以,不使用print我看到\\,使用print我看到\。那么,什么值加载字典包含 - 与\\\

+2

'r'''是原始字符串文字,不是正则表达式。这些文字在创建正则表达式时非常有用且有帮助,但它们完全是一个单独的概念。 –

回答

1

这里有一个窍门:使用list,看看是什么人物真的在字符串中

In [3]: list(u'\\d+') 
Out[3]: [u'\\', u'd', u'+'] 

list休息了串入单个字符。所以u'\\'是一个字符。 (u'\\'中的双反斜杠是escape sequence。)它表示一个反斜杠字符。这是正确的,因为r'\d+'也只有一个反斜杠:

In [4]: list(r'\d+') 
Out[4]: ['\\', 'd', '+']