【问题标题】:EOL while concatenating string + path连接字符串 + 路径时 EOL
【发布时间】:2016-01-13 02:14:54
【问题描述】:

我需要将特定的文件夹路径与一个字符串连接起来,例如:

我的字符串 = “blablabla”
path = "C:\folder\whatever\"

printing (path + mystring) 应该返回: C:\folder\whatever\blablabla

但是我总是收到 EOL 错误,并且必须有这样的斜线:\ 而不是这样:/

请给我指路,我用 r' 试过它不起作用,我试过加双“”,没有用,我想不通。

【问题讨论】:

  • 不要以反斜杠结束路径。如果你使用os.path.join,无论如何你都不需要。

标签: python string concatenation eol


【解决方案1】:

始终使用os.path.join() 来连接路径,并使用r 前缀来允许单个反斜杠作为Windows 路径分隔符:

r"C:\folder\whatever"

现在,现在需要使用反斜杠:

>>> import os
>>> mystring = "blablabla"
>>> path = r"C:\folder\whatever"
>>> os.path.join(path, mystring)
'C:\\folder\\whatever\\blablabla'

【讨论】:

  • 非常感谢您的解释!
【解决方案2】:

对于\,要么使用转义字符\\

mystring = "blablabla"
path = "C:\\folder\\whatever\\"

conc = path + mystring
print(conc)
# C:\folder\whatever\blablabla

或者,使用原始字符串,但是将最后一个反斜杠从path 的末尾移动到myString 的开头:

mystring = r"\blablabla"
path = r"C:\folder\whatever"

conc = path + mystring
print(conc)
# C:\folder\whatever\blablabla

您自己的原始字符串方法不起作用的原因是原始字符串可能不会以单个反斜杠结尾:

具体来说,原始文字不能以单个反斜杠结尾(因为 反斜杠会转义下面的引号字符)。

来自

【讨论】:

    【解决方案3】:

    两件事。

    首先,关于 EOL 错误,我最好的猜测 - 无法访问实际的 python 会话 - 是 python 抱怨,因为你有一个未终止的字符串,这是由最终的 " 字符被转义引起的,这甚至会发生如果字符串以r 为前缀。我的意见是,您应该删除前缀并正确地将所有反斜杠隔开,如下所示:\\

    在您的示例中,paththen 变为 path = "C:\\folder\\whatever\\"

    其次,您应该使用os.path.join,而不是手动连接路径:

    import os
    mystring = "blablabla"
    path = "C:\\folder\\whatever"
    print os.path.join(path, mystring)
    
    ## prints C:\\folder\\whatever\\blablabla
    

    注意 os.path 将使用运行应用程序的操作系统的路径转换,因此如果您在 Linux 上运行上述代码,将会产生错误/意外的结果。查看我链接的页面顶部的注释了解详细信息。

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 2011-06-27
      • 2014-10-29
      • 2020-05-18
      • 2012-12-14
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多