python函数传递参数时的转义问题
下面的代码中,region的第二个参数必须加r,或者写成"D:\test\",否则会因为没有转义报错。
如何让region的第二个参数不用加r,也不使用转义字符,只写成就"D:\test\"就能使用该函数?
或者说,有没有什么函数或方法可以代替原始字符串符号(r)?
def region(name,path): os.makedirs(path+name)
region("BH",r"D:\test\")
回答:
这个没有其它办法的,因为python中字符串定义的处理就决定了这样,而且即使你写成"D:\test\"
可能也有问题,因为在不加r
的字符串中\
是转义字符,要表示为"D:\test\"
的正确写法应该是"D:\\test\\"
我想你是处理路径中遇到这样的问题,你需要引入OS模块和path模块来帮助解决路径分隔符的问题。
回答:
很简单,不要用 \
就好了。
可以换成 /
或者 \\
三者都是 windows 下的合法的路径分隔符
\
/
\\
回答:
你可以参考 Python 官方文档的 字符串与字节串字面值, 将一个未标注 r
或 R
前缀的字符串字面值转换成带 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 一下, 让函数直接从脚本所在的文件扒下这串字符串.
如果你需要处理路径, 还是建议你参考 文件和目录访问.
以上是 python函数传递参数时的转义问题 的全部内容, 来源链接: utcz.com/p/938133.html