使用字符串:
"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"
我正在使用以下 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
还要检查这'\\'
是单个字符(第一个 \ 是转义字符):
>>> "D:\\Whatever\\Folder\\Etc 1"[2]
'\\'
是你想要的吗?
正如你评论的:
>>> len("D:\\Whatever\\Folder\\Etc 1")
24
>>> "D:\\Whatever\\Folder\\Etc 1"[23]
'1'
>>>
长度计算单个字符,正如我所说'\\'
的是单个字符。字符串的长度是 24,最后一个 char 是 23 1
。
更清晰:
>>> len('\\')
1
另请参阅此示例:
>>> 'a\nb'
'a\nb' # single \
>>> print 'a\nb'
a # no \ but, b printed on new line
b
扩展 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
规范的方法是在文件名中使用斜线 ( /
) 字符而不是反斜线 ( )。\
这避免了混淆,并使您的程序可移植。Python 中所有与文件相关的函数都使用斜杠,Windows 也接受它们。
具体问题是逃避。反斜杠在常规 Python 字符串中被视为特殊字符。它用于表达其他难以表达的字符。例如"\n"
换行符"\t"
就是制表符。因此要表达反斜杠本身,你必须写"\\"
, 这是一个单反斜杠字符。
如果您真的必须处理反斜杠,请使用原始字符串。这是编写字符串文字的另一种方法,其中反斜杠没有特殊含义。它们是这样创建的:
s = r"foo\bar"
注意r
开头的。变量s
是一个包含 7 个字符的字符串。
但有一点复杂:r"foo\"
是语法错误!原始字符串不能以反斜杠结尾。