python函数传递参数时的转义问题

x_hola
  • 666

下面的代码中,region的第二个参数必须加r,或者写成"D:\test\",否则会因为没有转义报错。
如何让region的第二个参数不用加r,也不使用转义字符,只写成就"D:\test\"就能使用该函数?

或者说,有没有什么函数或方法可以代替原始字符串符号(r)?

     def region(name,path):
             os.makedirs(path+name)

     region("BH",r"D:\test\")
回复
阅读 2.1k
3 个回答

这个没有其它办法的,因为python中字符串定义的处理就决定了这样,而且即使你写成"D:\test\"可能也有问题,因为在不加r的字符串中\是转义字符,要表示为"D:\test\"的正确写法应该是"D:\\test\\"

我想你是处理路径中遇到这样的问题,你需要引入OS模块和path模块来帮助解决路径分隔符的问题。

ponponon
  • 1.6k

很简单,不要用 \ 就好了。
可以换成 / 或者 \\

三者都是 windows 下的合法的路径分隔符

  • \
  • /
  • \\
HoyanMok
  • 3
新手上路,请多包涵

你可以参考 Python 官方文档的 字符串与字节串字面值, 将一个未标注 rR 前缀的字符串字面值转换成带 r 的.
你可以写一个函数像这样

ESCAPISTS = {
    "\\": "\\\\",
    "\n": "\\n",
    "\t": "\\t",
    ...
}

def primitive(a: str) -> str:
    for char, primitive_char in ESCAPISTS.items:
        a.replace(char, primitive_char)
    return a

但是这不可能完全实现你的需求, 因为这并不是一个双射, 比如 \uxxxx 这样的转义符你几乎无法复原.
如果你真的需要 - 虽然得不偿失 - 考虑 Hack 一下, 让函数直接从脚本所在的文件扒下这串字符串.

如果你需要处理路径, 还是建议你参考 文件和目录访问.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏