关于Python的input()函数传入的字符串默认不转义的发现

关于Python中input()函数的传入字符串默认不转义的发现

问题的发现

最近开始学习Python处理一些文档和表格,Windows中文件路径默认为用 " \ " 做间隔。前几天做一个项目的时候发现,若直接定义字符串来存储复制过来的路径,可能出现转义的问题,
例如:

  • path = “E:\办公\图片\123”

    print(path)

输出结果为:

  • E:\办公\图片s

“E:\办公\图片\123” 中的 “\123” 被转义为 s ,虽然说可以通过在 path 定义是通过参数 r 来默认字符串不转义,如:

  • path = r"E:\办公\图片\123"
    print(path)

  • E:\办公\图片\123

但是对于大批量的文档操作这种方式显然不合适,当时只是在代码调试初期用了这种方法,后来在改进的时候采用了 input() 输入地址的方法,并且为了防止转义,采用 replace方法 将字符串中的 " \ " 全部替换为 " / " ,代码如下:

  • path = input(“请输入要修改文件所在文件夹的地址\n”)

    path.replace("\\","/")

    print(path)

输入:

  • E:\办公\图片\123

输出:

  • “E:/办公/图片/123”

即变量 path 虽然也是字符串,但其中的 “\123” 没有被转义。

所以可以得到使用 input() 得到的字符串默认不转义。

用IDLE可得如下代码,

  • >>>path2 = “E:\办公\图片\123”

    >>>path1 = input(“请输入要修改文件所在文件夹的地址\n”)

    请输入要修改文件所在文件夹的地址

    E:\办公\图片\123

    >>>path1

    ‘E:\\办公\\图片S’

    >>>path2

    ‘E:\\办公\\图片\\123’

可以看到,在无歧义的地方,字符串中的 “\” 都被转化成 “\\” ,而在有歧义的地方,直接定义得到的字符串 path1 发生了转义,而使用 input() 得到的字符串 path2 没有发生转义。

进一步验证使用 input() 得到的字符串默认不转义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值