【问题标题】:using backslash in python (not to escape)在 python 中使用反斜杠(不要转义)
【发布时间】:2011-03-23 18:27:56
【问题描述】:
import os
path= os.getcwd()
final= path +'\xulrunner.exe ' + path + '\application.ini'
print final

我想要输出:

c:\python25\xulrunner.exe c:\python25\application.ini

我不希望反斜杠作为字符串工作,我的意思是不希望它转义或做任何特别的事情。但我得到一个错误

无效的 \x 转义

如何将 '\' 用作 '\' 而不是转义符?

【问题讨论】:

    标签: python string backslash


    【解决方案1】:

    要直接回答您的问题,请将r 放在字符串前面。

    final= path + r'\xulrunner.exe ' + path + r'\application.ini'
    

    但更好的解决方案是os.path.join:

    final = os.path.join(path, 'xulrunner.exe') + ' ' + \
             os.path.join(path, 'application.ini')
    

    (反斜杠转义换行符,但如果需要,您可以将整个内容放在一行中)

    我会提到您可以在文件路径中使用正斜杠,Python 会根据需要自动将它们转换为正确的分隔符(Windows 上的反斜杠)。所以

    final = path + '/xulrunner.exe ' + path + '/application.ini'
    

    应该可以。但最好还是使用os.path.join,因为这样可以清楚地说明您要做什么。

    【讨论】:

    • Python 不会将 / 转换为 `, rather /` 是 Windows 上的有效路径分隔符
    • 请注意,Windows 通常也可以使用正斜杠而不是反斜杠; Python 不需要转换它们。
    【解决方案2】:

    您可以转义斜线。使用\\,你只会得到一个斜线。

    【讨论】:

      【解决方案3】:

      您可以使用另一个反斜杠 (\\) 转义反斜杠,但它看起来不会更好。为了解决这个问题,在字符串前面放一个r 来表示一个原始字符串raw string 将忽略 literally all ,如果您还想要彩色文本,这是一件坏事,如果您的字符串包含一些引号,则 really 不好像这样:

      a_and_b = r”Alice’s friend is Bob. He always says, \“howdy\” ”

      在这种情况下,python 会抛出一个 SyntaxError...


      如果你还没有想出如何解决它,这里是:

      a_and_b = r”””Alice’s friend is Bob. He always says, \“howdy\” ””” 在这里,我们使用 多行字符串。如果字符串连续有 3 个引号,那就很容易了。在它们之间放一个空格就解决了:

      three_quotes = ’’’ Here are 3 single quotes: ‘ ‘ ‘ ’’’

      【讨论】:

        【解决方案4】:

        另一种简单(并且可以说更具可读性)的方法是使用字符串原始格式和替换,如下所示:

        import os
        path = os.getcwd()
        final = r"{0}\xulrunner.exe {0}\application.ini".format(path)
        print(final)
        

        或者使用 os path 方法(以及一个可读性的微函数):

        import os
        
        def add_cwd(path):
            return os.path.join( os.getcwd(), path )
        
        xulrunner = add_cwd("xulrunner.exe")
        inifile = add_cwd("application.ini")
        # in production you would use xulrunner+" "+inifile
        # but the purpose of this example is to show a version where you could use any character
        # including backslash
        final = r"{} {}".format( xulrunner, inifile )
        print(final)
        

        【讨论】:

          猜你喜欢
          • 2015-09-21
          • 1970-01-01
          • 2017-01-04
          • 1970-01-01
          • 1970-01-01
          • 2013-11-10
          相关资源
          最近更新 更多