3

使用字符串:

"D:\\Whatever\\Folder\\Etc 1"

我最终想变成

"D:\Whatever\Folder\Etc 1"

我正在使用以下 Python:

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

但它并没有起到作用——有没有更好的做法来削减斜线?

4

3 回答 3

4

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

>>> "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
于 2013-04-12T00:58:02.050 回答
1

扩展 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
于 2013-04-12T01:18:57.117 回答
1

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

具体问题是逃避。反斜杠在常规 Python 字符串中被视为特殊字符。它用于表达其他难以表达的字符。例如"\n"换行符"\t"就是制表符。因此要表达反斜杠本身,你必须写"\\", 这是一个单反斜杠字符。

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

s = r"foo\bar"

注意r开头的。变量s是一个包含 7 个字符的字符串。

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

于 2013-04-12T01:10:46.577 回答