python中原始字符串解析

python原始字符串是指在引号前添加 r 或 R 的字符串,如 r'hello'。

原始字符串是为了解决ascii字符和正则表达式特殊字符间的冲突而产生的,但实际应用范围可以更广泛。其本质原理就是取消字符串由输入到读入内存过程中ascii特殊字符的含义,使其按字面形式读入内存。

>>> p = r'\n'
>>> p
'\\n'
>>> print p
\n
>>> t = '\\n'
>>> t
'\\n'
>>> print t
\n
>>> if t == p :
	print True

	
True

在上面的代码中,可以发现 r‘\n’ 和 '\\n'是等价的,事实上 r‘\n’ 只是为了书写方便而发明的另一种记法而已。可以看到  p 输出的是 '\\n',也就是说p在内存中的记法就是 '\\n',而不会把 r 也读入内存。


下面解释一段正则表达式中容易让人迷惑的代码:我们要找一对原始的 \n 字符而不是换行。为了找到它,我们使用了一个简单的正则表达式,它的作用是查找通常被用来表示空白字符的反斜线-字符对(backslash-character pairs)。 

>>> import re
>>> m = re.search('\\[rtfvn]', r'Hello World!\n')  # 匹配失败
>>> if m is not None: m.group()

>>> m = re.search(r'\\[rtfvn]', r'Hello World!\n')  #匹配成功
>>> if m is not None: m.group()

'\\n'
 \n在ASCII中代表换行,而在正则表达式中也是特殊符号,为了让RE编译器把'\n'当成你想要表达的字符串,而不是换行,需要另一个反斜线对它进行转义\\n。上面  r'\\[rtfvn]'中的 r 是为了将两个反斜线都读入内存 ,再次证明 r 只作用在读入内存的过程中。

利用原始字符串输入路径:

>>> path = r'C:\windows\temp' + '\\'
>>> print path
C:\windows\temp\
上面 r 是为了取消 \temp中 \t 部分的特殊含义,为避免发生错误,在书写路径名时最好都用 r 声明。

单个\ 不能紧挨着引号,不然会报错。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值