本文实例讲述了Python原始字符串(raw strings)用法,分享给大家供大家参考。具体如下:
Python原始字符串的产生正是由于有正则表达式的存在。原因是ASCII 字符和正则表达式特殊字符间所产生的冲突。比如,特殊符号“\b”在ASCII 字符中代表退格键,但同时“\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。
为了让RE 编译器把两个字符“\b”当成你想要表达的字符串,而不是一个退格键,你需要用另一个反斜线对它进行转义,即可以这样写:“\\b”。
但这样做会把问题复杂化,特别是当你的正则表达式字符串里有很多特殊字符时,就更容易令人困惑了。一般来说,原始字符串经常被用于简化正则表达式的复杂程度。
事实上,很多Python 程序员在定义正则表达式时都只使用原始字符串。
下面的例子用来说明退格键“\b” 和正则表达式“\b”(包含或不包含原始字符串)之间的区别:
>>> m = re.match('\bblow', 'blow') # backspace, no match #退格键,没有匹配>>> if m is not None: m.group() ... >>> m = re.match('\\bblow', 'blow') # escaped \, now it works #用\转义后,现在匹配了 >>> if m is not None: m.group() ... 'blow' >>> m = re.match(r'\bblow', 'blow') # use raw string instead #改用原始字符串>>> if m is not None: m.group() ... 'blow'
原始字符串的这个特性让一些工作变得非常的方便,比如正则表达式的创建。正则表达式是一些定义了高级搜索匹配方式的字符串,通常是由代表字符、分组、匹配信息、变量名和字符类等的特殊符号组成。正则表达式模块已经包含了足够用的符号。但当你必须插入额外的符号来使特殊字符表现的像普通字符的时候,你就陷入了“字符数字”的泥潭!这时原始字符串就会派上用场了。
除了原始字符串符号(引号前面的字母“r”)以外,原始字符串跟普通字符串有着几乎完全相同的语法。这个'r'可以是小写也可以是大写,唯一的要求是必须紧靠在第一个引号前。在3个例子的第1个例子里面,我们需要一个反斜杠加一个“n”来而不是一个换行符。
>>> '\n' '\n' >>> print '\n' >>> r'\n' '\\n' >>> print r'\n' \n
>>> f = open('C:\windows\temp\readme.txt', 'r') Traceback (most recent call last): File "", line 1, in ? f = open('C:\windows\temp\readme.txt', 'r')IOError: [Errno 2] No such file or directory: 'C:\\win- dows\\temp\readme.txt' >>> f = open(r'C:\windows\temp\readme.txt', 'r')>>> f.readline() 'Table of Contents (please check timestamps for last update!)\n' >>> f.close()
希望本文所述对大家的Python程序设计有所帮助。
问题内容: 考虑: 那么我们如何获得报价,而不是斜杠? 并且请不要建议,因为那样的话,问题就变成了我们如何包括两种引号? 问题答案: 如果要在字符串中使用双引号而不是单引号,则可以只使用单引号作为分隔符: 如果在字符串中需要两种引号,请使用三引号引起来的字符串: 如果要在字符串中同时包含两种用三引号引起来的字符串(一种极不可能的情况),则不能这样做,并且必须使用带有转义符的非原始字符串。
问题内容: 在Python中,我有一个像这样的字符串: 如何将其解码为普通字符串,例如: 问题答案: 如果您的输入值为字符串,请使用进行转换: 如果输入值是一个对象,则可以使用方法: 演示: 可以使用编解码器解码Python 2个字节的字符串: 对于 Unicode 文字(例如带前缀),请使用。
问题内容: 如何从Spring Rest模板获取原始json字符串?我试过下面的代码,但它会返回不带引号的json,这会导致其他问题,我该如何按原样获取json。 问题答案: 您甚至不需要s!只需使用一个喜欢: 它将打印如下内容:
我希望自动将对象序列化为JSON的便利性和返回原始JSON字符串的能力。我正在使用Gson而不是Jackson,因为Gson已经在我的应用程序中有一段时间了,我有现有的调整,转换器,和注释遍布我的应用程序。 我可以自动序列化POJO的: 我希望这也能奏效: 现在的结果是一个转义值: 而不是:
问题内容: 管这个问题在实际中没有任何实际用途,但我对Python如何进行字符串实习感到好奇。我注意到以下内容。 这是我所期望的。 您也可以这样做。 那真是太聪明了! 但是你不能这样做。 Python为什么不评估,并意识到它s1与指向相同的地址相同?最后一个块到底在做什么False呢? 问题答案: 这是特定于实现的,但是你的解释器可能是内部编译时常量,而不是运行时表达式的结果。 接下来,我使用CP
本文向大家介绍Python字符串函数strip()原理及用法详解,包括了Python字符串函数strip()原理及用法详解的使用技巧和注意事项,需要的朋友参考一下 strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 语法:str.strip([chars]) str = "*****this is **string**