广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python : 反斜杠
  • 236
分享到

Python : 反斜杠

斜杠Python 2023-01-31 06:01:55 236人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

使用python写字符串常量时,raw string是个很好用的东东,比如在C里我要写一个windows下的路径,得这么写: char *path = "C:\\mydir\\myfile.txt"; 用"\\"来转义成一个反

使用python字符串常量时,raw string是个很好用的东东,比如在C里我要写一个windows下的路径,得这么
写:

char *path = "C:\\mydir\\myfile.txt";

用"\\"来转义成一个反斜杠字符。而在Python下用raw string就不用这么麻烦了:

path = r"C:\mydir\myfile.txt"

一个r搞定,是不是很简单?

真的这么简单吗?未必。试试如果要指定一个目录名呢?

>>> path = r"C:\mydir\mysubdir\"
   File "<string>", line 1
     path = r"C:\mydir\mysubdir\"
                              ^
SyntaxError: EOL while scanning single-quoted string

出错了吧。

这是一个常见的陷阱,在使用raw string时,反斜杠虽然不再做转义用,但它仍然保留了一部分“魔力”——保护字符串。如
>>> print r"abc\"xyz"
abc\"xyz
在反斜杠之后的那个引号由于反斜杠的魔力,不被视为字符串终结。那么对应到开头那个路径r"C:\mydir\mysubdir\",最后那个引号也是由于反斜杠的魔力,不被视为终结,python认为其后应该还有东西,结果没有,就报错了。

那岂不是用raw string写Windows路径就很不方便了吗?

答案是:raw string本来就不是为了方便写Windows路径而设计的,而是为了方便写正则表达式设计的。正则表达式中,反斜杠是转义字符,因此不可能出现以反斜杠结尾的正则表达式。

Windows路径的“正统”写法应该是:

path = os.path.nORMcase("c:/mydir/mysubdir/")

os.path.normcase在Windows平台下会自动把正斜杠转换成反斜杠。

由于正则表达式使用反斜杠来转义特殊字符,而python自身处理字符串时,反斜杠也是用于转义字符,这样就产生了一个双重转换的问题,要匹配字符串中1 个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转 义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四个"\\\\",完美匹配。
view plaincopy to clipboardprint?
import re  
re_str_patt = "\\\\"
reObj = re.compile(re_str_patt)  
str_test = "abc\\cd\\hh"
print reObj.findall(str_test)
import re
re_str_patt = "\\\\"
reObj = re.compile(re_str_patt)
str_test = "abc\\cd\\hh"
print reObj.findall(str_test)
      输出:['\\', '\\']
      这里要这么理解,首先第一重转换是字符串自身的转义,那么"\\\\",实际上就是表示两个反斜杠(两个字符),然后 传入正则表达式解析器,因为反斜杠依然是转义字符,那么进行第二重转换,两个反斜杠就代表一个反斜杠,所以就能和一个反斜杠进行匹配了,那么匹配连续的两 个反斜杠,写正则表达式时就要写8次"\"了,相当壮观,要匹配/d+(这个在正则表达式里面表示连续1一个以上的数字字符)这个字符串怎么写呢?
view plaincopy to clipboardprint?
import re  
re_str_patt = "\\\\d\\+"
print re_str_patt  
reObj = re.compile(re_str_patt)  
print reObj.findall("\\d+")
import re
re_str_patt = "\\\\d\\+"
print re_str_patt
reObj = re.compile(re_str_patt)
print reObj.findall("\\d+")
      写成re_str_patt = "\\\\d\+"也行,因为\+对于字符串来说,没有转义意义,所以就当成一个反斜杠了。
      在python中写正则表达式时用得最多的是raw字符串,原生字符串,什么意思?就是只有一重转换了,没有字符串转换了,只在正则表达式内部进行转换 了,这样匹配一个反斜杠的正则表达式可以这样写,re_str_patt = r"\\",有人会想,以后写windows的文件路径什么的方便了,呵呵直接 path = r"c:\myforder\xx" 搞定,是的,这句没有问题,但是如果你写成 path = r"c:\myforder\xx\",直接报错了,为什么?因为反斜杠虽然不作为转义字符了,但是还是对它后面的引号(包括单引号)有影响,使这个引号 不被视为字符串的终止,以为它后面还有字符,但是实际没有,因此会报错。其实可以反过来想raw字符串里面要表示引号怎么办呢?,可以发现 path = r"\\123\"xxx" 是可以的,那用raw字符串岂不是有局限性?不过raw在设计之初就是用来支持正则表达式的,而在正则里面反斜杠是转义字符,所以不可能出现在字符串的末尾的,所以建议不要图方便在其他的地方使用raw。

--结束END--

本文标题: Python : 反斜杠

本文链接: https://www.lsjlt.com/news/189797.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中的左斜杠、右斜杠(正斜杠和反斜杠)
    首先,"/"左倾斜是正斜杠,""右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 pytho...
    99+
    2022-06-04
    斜杠 Python
  • Python : 反斜杠
    使用python写字符串常量时,raw string是个很好用的东东,比如在C里我要写一个Windows下的路径,得这么写: char *path = "C:\\mydir\\myfile.txt"; 用"\\"来转义成一个反...
    99+
    2023-01-31
    斜杠 Python
  • java中正斜杠与反斜杠
    1.Java String类的replaceAll() 1.1 java 把反斜杠(\)替换成双斜杠(\) replaceAll( “\\”, “\\\\”); 1.2 java 把反斜杠(\)替换成...
    99+
    2023-09-12
    前端 java
  • python中的正斜杠与反斜杠实例验证
    目录一、历史渊源 二、实例验证 三、总结扩展:Python 基础篇-正斜杠("/")和反斜杠("\")的用法一、历史渊源 ...
    99+
    2023-03-02
    python 正斜杠与反斜杠 python 正斜杠 python反斜杠
  • PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)
    目录1.问题背景        2.解决方案2.1.斜杠转反斜杠( / 转 \ )2.2.反斜杠转斜杠( \ 转 / )1.问题背景...
    99+
    2022-11-11
    PyQt转换路径斜杠 PyQt 路径斜杠
  • python指定路径斜杠与反斜杠遇到的问题
    目录指定路径斜杠与反斜杠的问题解决方法正斜杠与反斜杠历史渊源实例验证总结指定路径斜杠与反斜杠的问题 报错:SyntaxError: (unicode error) ‘...
    99+
    2023-03-03
    python指定路径 python指定路径斜杠 python指定路径反斜杠
  • Python反斜杠的示例分析
    小编给大家分享一下Python反斜杠的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先我们写一段非常简单的Python代码,它的作用是把一个字段先转换为...
    99+
    2023-06-14
  • python中的正斜杠与反斜杠使用实例代码分析
    这篇文章主要介绍了python中的正斜杠与反斜杠使用实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中的正斜杠与反斜杠使用实例代码分析文章都会有所收获,下面我们一起来看看吧。一、历史渊源U...
    99+
    2023-07-05
  • python指定路径斜杠与反斜杠遇到的问题怎么解决
    这篇“python指定路径斜杠与反斜杠遇到的问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python指定路径斜...
    99+
    2023-07-05
  • php5.2怎么去除反斜杠
    本文操作环境:windows7系统、PHP5.2版、DELL G3电脑php5.2怎么去除反斜杠?新建一个php文件,命名为test.php,用于讲解php中如何去除字符串中的反斜杠。在test.php文件中,使用header()方法将页面...
    99+
    2018-07-28
    php5.2 反斜杠
  • php怎么转义反斜杠
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑php怎么转义反斜杠addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。预定义字符是:单引号(')双引号(")反斜杠(\)NULL提...
    99+
    2020-08-10
    php
  • php如何转义反斜杠
    本文小编为大家详细介绍“php如何转义反斜杠”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何转义反斜杠”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在PHP中,可以利用addslashes()函数转义反...
    99+
    2023-06-30
  • json怎么转义反斜杠
    在 JSON 中,如果要将反斜杠转义,可以使用双反斜杠进行转义。例如,如果要将字符串 `C:\Program Files` 转义为 ...
    99+
    2023-08-26
    json
  • 老生常谈java路径中的反斜杠和斜杠的区别
    JAVA中的斜杠有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为“/”;反斜杠的符号为“\”。斜杠(/)在JAVA中没有什么特别的意义,就是代表一个字符‘/';反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如“\n”(换行)、...
    99+
    2023-05-31
    java 路径 斜杠
  • 计算机网络中正斜杠与反斜杠有什么区别
    这篇文章将为大家详细讲解有关计算机网络中正斜杠与反斜杠有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 "/"正斜杠,英文是forward slash,"\...
    99+
    2023-06-14
  • MySQL里的反斜杠(\\)的使用
    目录一、INSERT语句中有反斜杠(\)1. 实际测试2. 原理二、SELECT查询反斜杠(\)1. 实际测试2. 原理一、INSERT语句中有反斜杠(\) 1. 实际测试 咱们用下面这些SQL来测试一下反斜杠(...
    99+
    2023-02-03
    MySQL反斜杠
  • php怎么去掉json反斜杠
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php怎么去掉json反斜杠?PHP去掉json字符串中的反斜杠\通过AJAX传到PHP的json字符串有时候加上反斜杠”\”来转义,PHP处理时需要先去掉反斜杠,然后再...
    99+
    2018-07-09
    php
  • php去除反斜杠的方法
    这篇文章给大家分享的是有关php去除反斜杠的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php去除反斜杠的方法:首先创建一个PHP示例文件;然后通过“stripslashes("Who\'...
    99+
    2023-06-14
  • php反斜杠用不了怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php反斜杠用不了怎么办?要使用反斜杠符号来转义特殊字符,您需要使用双引号字符串,而不是单引号字符串,请尝试以下操作:fwrite($handle, 'test\...
    99+
    2020-09-27
    php 反斜杠
  • php 怎么不让反斜杠转义
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php 怎么不让反斜杠转义如何使用 json_encode 不自动转义斜杠。对于如下数组 $a,现有两种办法解决:$a = array( 'http://www...
    99+
    2021-12-12
    php 反斜杠
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作