Python如何获取无首尾斜杠/反斜杠的路径 解决strip输出异常
问题原因
你遇到的乱码和strip()方法本身无关,根源是测试用的字符串写得不对:
- Python普通字符串中,反斜杠
\是转义标记,你写的字面量"\ali"里,开头的\a会被解析成ASCII响铃控制符(对应编码值为\x07),根本不是你预期的「反斜杠 + ali」的字符串,从输入阶段就错了,自然跑不出正确结果。 - 你写的
strip("/\\")参数逻辑本身是正确的:转义后这个参数实际包含/和\两个字符,刚好匹配需要去掉的首尾斜杠、反斜杠。
正确实现方式
测试注意事项
如果要手动写带反斜杠的路径做测试,必须避免转义干扰,用以下两种写法之一:
# 写法1:原始字符串,前缀加r,字符串内的\不会被识别为转义符 test_path = r"\ali" # 写法2:把反斜杠自身转义,双反斜杠代表一个实际的反斜杠 test_path2 = "\\ali"
这时候再调用strip就能得到正确结果:
>>> test_path.strip("/\\") 'ali'
通用处理逻辑
对于外部传入、值未知的路径变量(比如函数参数、用户输入、文件读取得到的路径),不会存在手动写字面量的转义问题,直接调用strip处理即可,不管路径有没有首尾斜杠、有多少个连续的首尾斜杠,都能正确清理,且不会改动路径中间的斜杠格式:
def trim_path_delimiter(path: str) -> str: return path.strip("/\\")
可以覆盖所有常见场景:
- 输入
/path/to/something,输出path/to/something - 输入
\path\to\something,输出path\to\something - 输入
///C:/Users/test\\,输出C:/Users/test - 输入
no_delimiter_path,原样返回no_delimiter_path
*注意:不要尝试用原始字符串写strip的匹配参数,r"/\"会触发语法错误(原始字符串不允许以单个反斜杠结尾),直接用"/\\"的写法最稳妥。
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

