You need to enable JavaScript to run this app. 为什么向Python的set中添加相对路径字符串时反斜杠数量会增加?
优惠活动
大模型
产品
解决方案
定价
更多

为什么向Python的set中添加相对路径字符串时反斜杠数量会增加?

问题原因解析

1. 你手动赋值的字符串和input获取的字符串根本不是同一个内容

Python中直接写在代码里的带引号的内容叫字符串字面量,默认会自动解析转义字符:你写的".\train.csv"里的\t会被当成制表符转义序列,最终得到的字符串里根本不存在反斜杠,实际内容是「. + 制表符 + rain.csv」。
而input()函数会原样接收你输入的所有字符,不会做任何转义解析,你输入.\train.csv得到的字符串内容就是「. + 反斜杠 + t + rain.csv」,和你手动写的字面量完全不一样。
如果要手动写出和input输入完全相同的字符串,需要用原始字符串写法:r".\train.csv",或者手动转义反斜杠:".\\train.csv"。

2. 打印容器和打印单个字符串的规则不一样

Python打印list、set这类容器对象时,会输出容器内每个元素的repr()结果,而不是普通的str()结果:

  • str()是给人读的友好展示,字符串里的单个反斜杠会直接显示为\
  • repr()是Python对象的官方表示,输出的内容可以直接复制到代码里当合法的字符串字面量使用,所以会自动把字符串里的反斜杠转义成\\,避免被当成转义序列解析
    你看到的set输出里的双反斜杠,只是repr()的展示效果,字符串实际存储的还是单个反斜杠,不会影响实际使用。

验证示例

你可以运行下面的代码对比结果:

# 手动写原始字符串,和input输入的内容完全一致
set_0 = set()
set_0.add(r".\train.csv")
print(set_0) 
# 输出为 {'.\\train.csv'},和input场景的输出完全相同

内容的提问来源于stack exchange,提问作者konsulrima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:12:04