Python为path-string添加了特殊字符

时间:2016-04-04 08:01:50

标签: python string special-characters

我正在尝试使用Python 2.7中的路径

这就是我在主要课程中要做的事情:

program = MyProgram()
program.doSomething('C:\Eclipse\workspace\MyProgram\files\12345678_Testing1_ABCD005_Static_2214_File12.txt')

在函数doSomething(filePath)内,字符串看起来像这样:

Deformated string

所以有一种特殊字符加上一些字符被完全删除。什么可能导致这个问题?

5 个答案:

答案 0 :(得分:2)

\是Python中的转义字符。 According to docs,您已创建包含\f ASCII Formfeed (FF)字符的字符串。

  

字符串文字可以包含在匹配的单引号(')或中   双引号(")。它们也可以包含在匹配的组中   三个单引号或双引号(通常称为   三重引用的字符串)。 反斜杠(\)字符用于转义   否则具有特殊含义的字符,例如换行符,   反斜杠本身,或引用字符。

使用双斜杠(\\ - 来转义转义字符)或使用原始字符串文字(r"some\path")。

  

字符串文字可以选择以字母“r”或“R”为前缀;   这些字符串称为原始字符串,并使用不同的规则   解释反斜杠转义序列。

答案 1 :(得分:2)

这可能在您的情况下有点过头了, 您可以使用os.path.join来构建路径。有了这个,你有两个好处:

  • 它使用当前系统的分隔符(Unix'/'VS Windows'\')
  • 构建路径
  • 如果是windows
  • ,你不必关心转义分隔符

如上所述,这对你的代码来说可能有点过分了:

import os.path
program = MyProgram()
my_path = os.path.join('C:', 
                       'Eclipse', 
                       'workspace', 
                       'MyProgram', 
                       'files',
                       '12345678_Testing1_ABCD005_Static_2214_File12.txt')
program.doSomething(my_path)

答案 2 :(得分:1)

反斜杠似乎在创造一个特殊的角色。在反斜杠后面放置一个额外的反斜杠(作为逃避字符)应该修复它。

program = MyProgram()
program.doSomething('C:\\Eclipse\\workspace\\MyProgram\\files\\12345678_Testing1_ABCD005_Static_2214_File12.txt')

答案 3 :(得分:0)

我们可以通过将转换为原始字符串来转换包含转义字符的Windows路径名。

如果您想对字符串进行硬编码,则可以使用

mypath = r'C:\this_is_my_path'

和python将忽略上面字符串中的'\ t'。

但是如果你有一个包含转义字符的字符串变量,那么你可以使用下面提到的方法。

def string2RawString(string):
    rawString = ''
    for i in string.split('\\'):
        rawString = rawString+("%r"%i).strip("'")+"\\"
    return rawString

答案 4 :(得分:0)

在文件路径前使用r

program.doSomething(r'C:\Eclipse\workspace\MyProgram\files\12345678_Testing1_ABCD005_Static_2214_File12.txt')