相关文章推荐
稳重的猴子  ·  [Node.js] ...·  1 年前    · 
含蓄的蚂蚁  ·  真·大语言模型Stable ...·  1 年前    · 
沉稳的脸盆  ·  How to enforce netty ...·  1 年前    · 
腹黑的水龙头  ·  WPF ...·  1 年前    · 
飞奔的丝瓜  ·  css ...·  1 年前    · 

Python在path-string中添加特殊字符

1 人关注

我正试图在Python 2.7中处理一个路径

这就是我在我的主类中试图做的事情。

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

在函数doSomething(filePath)中,字符串已经看起来像这样。

因此,有一种特殊的字符,加上一些字符被复制删除。什么会导致这个问题?

1 个评论
通常情况下,你需要转义反斜线,或者像这样传递一个原始字符串。 program.doSomething(r'C:\Eclipse\workspace\MyProgram\files\12345678_Testing1_ABCD005_Static_2214_File12.txt')
python
string
special-characters
John
John
发布于 2016-04-04
5 个回答
Łukasz Rogalski
Łukasz Rogalski
发布于 2020-08-03
已采纳
0 人赞同

\ 是Python中的转义符。 据文件显示 ,你已经创建了带有 \f ASCII Formfeed (FF) 字符的字符串。

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

要么使用双斜线( \\ --以逃避转义字符),要么使用原始字符串字面( r"some\path" )。

字符串可以选择以字母 "r "或 "R "为前缀。 这样的字符串被称为原始字符串,并使用不同的规则来解释反斜线转义序列。 解释反斜线转义序列的不同规则。

或者,更简单地说,使用 / 作为路径分隔符,这在Windows上也能正常工作。
Pedru
Pedru
发布于 2020-08-03
0 人赞同

在你的情况下,这可能是矫枉过正。 你可以使用 os.path.join 来建立路径。这样做你有两个好处。

  • it builds paths using the current system's separator (Unix '/' VS Windows '\')
  • you don't have to care about escaping the separator in case of 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)
        
    Koga
    Koga
    发布于 2020-08-03
    0 人赞同

    反斜杠似乎在创造一个特殊字符。在反斜线后面多放一个反斜线(作为转义符)应该可以解决这个问题。

    program = MyProgram()
    program.doSomething('C:\\Eclipse\\workspace\\MyProgram\\files\\12345678_Testing1_ABCD005_Static_2214_File12.txt')
        
    srinivas_n
    srinivas_n
    发布于 2020-08-03
    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