Convert backward slash to forward slash in python

后端 未结 5 1124
说谎
说谎 2020-12-31 22:40

Hi I have read articles related converting backward to forward slashes. But sol was to use raw string.

But Problem in my case is :

I will get file path dyna

相关标签:
5条回答
  • 2020-12-31 23:13

    Raw strings are for string literals (written directly in the source file), which doesn't seem to be the case here. In any case, forward slashes are not special characters -- they can be embedded in a regular string without problems. It's backslashes that normally have other meaning in a string, and need to be "escaped" so that they get interpreted as literal backslashes.

    To replace backslashes with forward slashes:

    # Python:
    string = r'C:\dummy_folder\a.txt'
    string = string.replace('\\', '/')
    
    # Ruby:
    string = 'C:\\dummy_folder\\a.txt'
    string = string.gsub('\\', '/')
    
    0 讨论(0)
  • 2020-12-31 23:16

    Don't do this. Just use os.path and let it handle everything. You should not explicitly set the forward or backward slashes.

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

    But again, don't. Just use os.path and be happy!

    0 讨论(0)
  • 2020-12-31 23:21

    There is also os.path.normpath(), which converts backslashes and slashes depending on the local OS. Please see here for detailed usage info. You would use it this way:

    >>> string = r'C:/dummy_folder/a.txt'
    >>> os.path.normpath(string)
    'C:\dummy_folder\a.txt'
    
    0 讨论(0)
  • 2020-12-31 23:28

    Handling paths as a mere string could put you into troubles.; even more if the path you are handling is an user input or may vary in unpredictable ways.

    Different OS have different way to express the path of a given file, and every modern programming language has own methods to handle paths and file system references. Surely Python and Ruby have it:

    • Python: os.path
    • Ruby: File and FileUtils

    If you really need to handle strings:

    • Python: string.replace
    • Ruby : string.gsub
    0 讨论(0)
  • 2020-12-31 23:33
    >>> 'C:\\dummy_folder\\a.txt'.replace('\\', '/')
    'C:/dummy_folder/a.txt'
    

    In a string literal, you need to escape the \ character.

    0 讨论(0)
提交回复
热议问题