python:将路径中的double\\n替换为single\

python:将路径中的double\\n替换为single\,python,Python,使用字符串: "D:\\Whatever\\Folder\\Etc 1" 我最终想变成这样 "D:\Whatever\Folder\Etc 1" 我正在使用以下Python: ln=line[:-1].replace('\n','').replace('\r','').replace("\\\\","\\").rstrip(' ') 但它并没有起到作用——是否有更好的方法来减少斜杠?我认为您是在打印原始字符串,请参见: >>> "D:\\Whatever\\Folder\

使用字符串:

"D:\\Whatever\\Folder\\Etc 1"
我最终想变成这样

"D:\Whatever\Folder\Etc 1"
我正在使用以下Python:

ln=line[:-1].replace('\n','').replace('\r','').replace("\\\\","\\").rstrip(' ')

但它并没有起到作用——是否有更好的方法来减少斜杠?

我认为您是在打印原始字符串,请参见:

>>> "D:\\Whatever\\Folder\\Etc 1"
'D:\\Whatever\\Folder\\Etc 1'
>>> 
>>> print "D:\\Whatever\\Folder\\Etc 1"
D:\Whatever\Folder\Etc 1
还要检查此
'\\'
是否为单字符(第一个\为转义字符):

这是你想要的吗

正如你所评论的:

>>> len("D:\\Whatever\\Folder\\Etc 1")
24
>>> "D:\\Whatever\\Folder\\Etc 1"[23]
'1'
>>> 
长度计算单个字符,正如我所说,
“\\'
是单个字符。字符串的长度是24,23处的最后一个字符是
1

更清楚的是:

>>> len('\\')
1
另请参见此示例:

>>> 'a\nb'
'a\nb'              # single \
>>> print 'a\nb'
a                   # no \ but, b printed on new line
b

规范的方法是在文件名中使用斜杠(
/
)字符,而不是反斜杠(
\
)。这避免了混淆,并使您的程序可移植。Python中所有与文件相关的函数都使用斜杠,Windows也接受斜杠

具体问题正在解决。反斜杠在常规Python字符串中被视为特殊字符。它用于表示其他情况下难以表达的字符。例如
“\n”
是换行符
“\t”
是制表符。因此,要表示反斜杠本身,必须编写
“\\”
,这是一个反斜杠字符

如果你真的要处理反斜杠,使用原始字符串。这是编写字符串文字的另一种方法,其中反斜杠没有特殊含义。它们是这样创建的:

s = r"foo\bar"
注意开头的
r
。变量
s
是一个包含7个字符的字符串


但是有一点复杂:
r“foo\”
是一个语法错误!原始字符串不能以反斜杠结尾。

扩展Eike所说的内容:使用
/
而不是
\
来A)简化编写,B)确保代码在非Windows系统上运行时仍然有效

另外,请查看
os.path
中的函数,例如:

>>> print os.path.abspath('d:/foo/bar/baz')
d:\foo\bar\baz
>>> print os.path.abspath('c:\\program files\\')
c:\program files

啊,当然了,那么它是用绳子逃逸的?我担心的是,当我对字符串执行len()时,它会对斜杠进行双重计数,这可能吗?@fox您必须在转义序列之前编写
'\'
。。。像
'\n'
>>> print os.path.abspath('d:/foo/bar/baz')
d:\foo\bar\baz
>>> print os.path.abspath('c:\\program files\\')
c:\program files