Skip to content Skip to sidebar Skip to footer

How To Create Raw String From String Variable In Python?

You create raw string from a string this way: test_file=open(r'c:\Python27\test.txt','r') How do you create a raw variable from a string variable, such as path = 'c:\Python27\test

Solution 1:

There is no such thing as "raw string" once the string is created in the process. The "" and r"" ways of specifying the string exist only in the source code itself.

That means "\x01" will create a string consisting of one byte 0x01, but r"\x01" will create a string consisting of 4 bytes '0x5c', '0x78', '0x30', '0x31'. (assuming we're talking about python 2 and ignoring encodings for a while).

You mentioned in the comment that you're taking the string from the user (either gui or console input will work the same here) - in that case string character escapes will not be processed, so there's nothing you have to do about it. You can check it easily like this (or whatever the windows equivalent is, I only speak *nix):

% cat > test <<EOFheredoc> \x41heredoc> EOF% < test python -c "import sys; print sys.stdin.read()"
\x41

Solution 2:

My solution to convert string to raw string (works with this sequences only: '\a', \b', '\f', '\n', '\r', '\t', '\v' . List of all escape sequences is here):

defstr_to_raw(s):
    raw_map = {8:r'\b', 7:r'\a', 12:r'\f', 10:r'\n', 13:r'\r', 9:r'\t', 11:r'\v'}
    returnr''.join(i iford(i) > 32else raw_map.get(ord(i), i) for i in s)

Demo:

>>>file_path = "C:\Users\b_zz\Desktop\fy_file">>>file_path
'C:\\Users\x08_zz\\Desktop\x0cy_file'
>>>str_to_raw(file_path)
'C:\\Users\\b_zz\\Desktop\\fy_file'

Solution 3:

The solution by ndpu works for me.

I could not resist the temptation to enhance it (make it compatible with ancient Python 2 versions and hoping to speed it up):

_dRawMap = {8:r'\b', 7:r'\a', 12:r'\f', 10:r'\n', 13:r'\r', 9:r'\t', 11:r'\v'}

defgetRawGotStr(s):
    #returnr''.join( [ _dRawMap.get( ord(c), c ) for c in s ] )

I did a careful time trial, and it turns out that the original code by ndpu is a little faster. List comprehensions are fast, but generator expressions are faster.

Post a Comment for "How To Create Raw String From String Variable In Python?"