Python中替换路径字符串反斜杠时/40子串丢失问题求助
Windows路径反斜杠替换时子串丢失的问题
问题场景
需要为文件读取函数做输入容错处理:当用户输入包含反斜杠的路径字符串sqlfile_in_DS="I:\DS\40-400\OppMetrics.sql"时,需将反斜杠替换为正斜杠,目标结果是sqlfile_in_DS="I:/DS/40-400/OppMetrics.sql",但实际操作中发现子串/40消失。
尝试的方法及结果
# 方法1:使用pathlib.PureWindowsPath print(pathlib.PureWindowsPath(sqlfile_in_DS)) # 输出: # I:/DS -400/OppMetrics.sql # 方法2:使用字符串replace方法 print(sqlfile_in_DS.replace('\\','/')) # 输出: # I:/DS -400/OppMetrics.sql
仅原始字符串字面量时方法有效
当路径字符串以原始字符串字面量(前缀r)定义时,两种方法都能得到预期结果:
sqlfile_in_DS=r"I:\DS\40-400\OppMetrics.sql" print(pathlib.PureWindowsPath(sqlfile_in_DS)) print(sqlfile_in_DS.replace('\\', '/')) # 输出: # I:/DS/40-400/OppMetrics.sql
无效的普通字符串转原始字符串尝试
尝试了多种方法将普通字符串转为原始字符串,均未成功:
# 方法1:unicode_escape编码 print(sqlfile_in_DS.encode('unicode_escape')) # 输出: # b'I:\\\\DS -400\\\\OppMetrics.sql' # 方法2:格式化字符串加r前缀 print(r'{}'.format(sqlfile_in_DS)) # 输出: # I:\DS -400\OppMetrics.sql
内容的提问来源于stack exchange,提问作者DrDan
相关产品推荐
相关产品推荐

