关于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 没有发生转义。