簡體   English   中英

如何將反斜杠轉換為正斜杠?

[英]How to convert back-slashes to forward-slashes?

我在 python 中工作,我需要轉換它:

C:\folderA\folderB to C:/folderA/folderB

我有三種方法:

dir = s.replace('\\','/')

dir = os.path.normpath(s) 

dir = os.path.normcase(s)

在每種情況下,輸出都是

C:folderAfolderB

我不確定我做錯了什么,有什么建議嗎?

我最近發現了這一點,並認為值得分享:

import os

path = "C:\\temp\myFolder\example\\"
newPath = path.replace(os.sep, '/')
print(newPath)  # -> C:/temp/myFolder/example/

您的具體問題是replace參數的順序和轉義,應該是

s.replace('\\', '/')

然后是:

posixpath.join(*s.split('\\'))

在 *nix 平台上相當於:

os.path.join(*s.split('\\'))

但不要在 Windows 上依賴它,因為它會更喜歡特定於平台的分隔符。 還:

請注意,在 Windows 上,由於每個驅動器都有一個當前目錄,因此 os.path.join("c:", "foo") 表示相對於驅動器 C: (c:foo) 上的當前目錄的路徑,而不是 c :\富。

嘗試

path = '/'.join(path.split('\\'))

路徑名稱在 Windows 中的格式不同。 解決方案很簡單,假設你有一個這樣的路徑字符串:

data_file = "/Users/username/Downloads/PMLSdata/series.csv"

只需將其更改為:(在路徑前面添加 r )

data_file = r"/Users/username/Downloads/PMLSdata/series.csv"

字符串前面的修飾符 r 告訴 Python 這是一個原始字符串。 在原始字符串中,反斜杠按字面意思解釋,而不是轉義字符。

要定義路徑的變量,您必須首先添加r ,然后在末尾添加替換語句.replace('\\', '/')

例如:

In>>  path2 = r'C:\Users\User\Documents\Project\Em2Lph\'.replace('\\', '/')
In>>  path2 
Out>> 'C:/Users/User/Documents/Project/Em2Lph/'

此解決方案不需要額外的庫

很抱歉參加聚會遲到了,但我想知道沒有人建議使用 pathlib-library。

pathlib是“面向對象的文件系統路徑”的模塊

要將 windows 樣式(反斜杠)路徑轉換為正斜杠(通常用於 Posix-Paths),您可以使用 pathlib 以非常冗長(和平台無關)的方式執行此操作:

import pathlib

pathlib.PureWindowsPath(r"C:\folderA\folderB").as_posix()
>>> 'C:/folderA/folderB'

請注意,該示例使用字符串文字“r”(以避免將“\”用作轉義字符)在其他情況下,應正確引用路徑(使用雙反斜杠)“C:\\folderA\\folderB”

怎么樣 :

import ntpath
import posixpath
.
.
.
dir = posixpath.join(*ntpath.split(s))
.
.

這也可以工作:

def slash_changer(directory):

if "\\" in directory:
    return directory.replace(os.sep, '/')
else:
    return directory

打印(slash_changer(os.getcwd()))

這是完美的解決方案,將字母 'r' 放在要轉換的字符串之前,以避免所有特殊字符,如 '\t' 和 '\f'... 如下例所示:

str= r"\test\hhd"

print("linux path:",str.replace("\\","\\\\"))
print("windows path:",str.replace("\\","/"))

結果:

linux path: \\test\\hhd
windows path: /test/hhd

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM