Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将反斜杠转换为正斜杠_Python_Ruby_Path - Fatal编程技术网

在python中将反斜杠转换为正斜杠

在python中将反斜杠转换为正斜杠,python,ruby,path,Python,Ruby,Path,嗨 我读过有关向后转换为向前斜杠的文章。 但索尔用的是粗绳子 但我的问题是: 我将动态获取变量的文件路径 var='C:\dummy\u folder\a.txt' 在这种情况下,我需要将其转换为正向斜杠。 但由于“\a”,我无法转换为正向斜杠 如何转换?或者我应该如何将此字符串更改为原始字符串,以便可以将其更改为正斜杠。只要使用,让它处理一切。不应显式设置正斜杠或反斜杠 >>> var=r'C:\dummy_folder\a.txt' >>> var.rep

嗨 我读过有关向后转换为向前斜杠的文章。 但索尔用的是粗绳子

但我的问题是:

我将动态获取变量的文件路径 var='C:\dummy\u folder\a.txt' 在这种情况下,我需要将其转换为正向斜杠。 但由于“\a”,我无法转换为正向斜杠

如何转换?或者我应该如何将此字符串更改为原始字符串,以便可以将其更改为正斜杠。只要使用,让它处理一切。不应显式设置正斜杠或反斜杠

>>> var=r'C:\dummy_folder\a.txt'
>>> var.replace('\\', '/')
'C:/dummy_folder/a.txt'
但还是不要。只要使用os.path,就可以快乐

>>> 'C:\\dummy_folder\\a.txt'.replace('\\', '/')
'C:/dummy_folder/a.txt'

在字符串文本中,您需要转义
\
字符。

原始字符串用于字符串文本(直接写入源文件),这里的情况似乎不是这样。在任何情况下,正斜杠都不是特殊字符——它们可以嵌入到常规字符串中而不会出现问题。反斜杠通常在字符串中有其他含义,需要进行“转义”,以便将其解释为文字反斜杠

要将反斜杠替换为正斜杠,请执行以下操作:

# Python:
string = r'C:\dummy_folder\a.txt'
string = string.replace('\\', '/')

# Ruby:
string = 'C:\\dummy_folder\\a.txt'
string = string.gsub('\\', '/')

把路径当作一根线处理可能会给你带来麻烦。;如果您正在处理的路径是用户输入或可能以不可预测的方式变化,则情况更糟

不同的操作系统有不同的方式来表示给定文件的路径,每种现代编程语言都有自己的方法来处理路径和文件系统引用。当然Python和Ruby都有:

  • Python:
  • 鲁比:还有
如果确实需要处理字符串:

  • Python:string.replace
  • Ruby:string.gsub
    • 还有(),它根据本地操作系统转换反斜杠和斜杠。有关详细使用信息,请参阅。您可以这样使用它:

      >>> string = r'C:/dummy_folder/a.txt'
      >>> os.path.normpath(string)
      'C:\dummy_folder\a.txt'
      

      谢谢sol,你是怎么把一个反斜杠改成两个反斜杠的?你需要用两个反斜杠来编码。反斜杠是一个特殊字符,要在字符串文字中获得一个真正的反斜杠,需要键入两个。感谢ans,但我尝试了os.path,但它不会变为正斜杠,因为“\A”、\n”将在转换Bhishek之前进行处理,您可以使用上面显示的方式替换它,但你不应该。问题是有一些库使用windows路径格式(甚至在windows上)崩溃,我们需要转换它们。这个字符串“动态”从何而来?在Python程序中,反斜杠的主要位置有一个特殊的含义,即Python源代码字符串文本,应该是静态的。为什么要转换它们?在Windows上,Python输出
      C:\path\to\file.txt
      ;但是,我希望在git bash中运行一个命令,该命令应该是
      /c/path/to/file.txt
      ,感谢您指出normpath,但是,它只有一种方式可以工作:将前斜杠转换为后斜杠。它不能以另一种方式工作(反斜杠到正斜杠)。我想最好的方法是假设linux路径,并确保所有路径字符串都使用正斜杠。然后,在使用字符串之前调用normpath(),这是最好的答案。在MacOSX下,
      OS.path.normpath
      会像预期的那样保留前斜杠。在Windows下,斜杠将转换为反斜杠。