如何在 python 中用 "/" 替换""?



我有一个值path = V:PRODUCTIONSSC_02SHOT_310compRendermainv0032560x1440_exrSC_02_SHOT_310_Compositing_main_v003.1001.exr,我需要用普通斜杠替换反斜杠。

使用.replace("\",'/')normpath可以让我:V:/PRODUCTIONS/SC_02/SHOT_310/compRender/main003�0x1440_exr/SC_02_SHOT_310_Compositing_main_v003.1001.exr

我想我可以用"/v">

替换"\v"并侥幸逃脱,但是"\256"给了我特殊字符,我无法搜索"\256",因为字符串中的值会根据文件而变化。

此外,我无法像path=r"V:PRODUCTIONSSC_02SHOT_310compRendermainv0032560x1440_exrSC_02_SHOT_310_Compositing_main_v003.1001.exr"一样在字符串前面使用"r",因为我没有创建路径值,因此它会转发给我。

由于您从另一个不可修改的源接收到变量,因此该字符串已被转义。

现在,对于您的字符串,有两个地方会误解字符:v256 .

>>> path = 'V:PRODUCTIONSSC_02SHOT_310compRendermainv0032560x1440_exrSC_02_SHOT_310_Compositing_main_v003.1001.exr'
>>> path
'V:\PRODUCTIONS\SC_02\SHOT_310\compRender\mainx0b003®0x1440_exr\SC_02_SHOT_310_Compositing_main_v003.1001.exr'
# ----------------------------------------------^-----^

好消息是,原始字符串是语法的一部分,而不是字符串的一部分。问题在于python解释字符串的方式。您可以做的一件事是查找这些有问题的符号并替换它们。以下是此配方的修改版本,可处理大多数用例:

def raw(text):
    escape_dict={'a':r'a',
        'b':r'b',
        'c':r'c',
        'f':r'f',
        'n':r'n',
        'r':r'r',
        't':r't',
        'v':r'v',
        ''':r''',
        '"':r'"',
        '':r'',
        '1':r'1',
        '2':r'2',
        '3':r'3',
        '4':r'4',
        '5':r'5',
        '6':r'6',
        '7':r'7',
        '8':r'8',
        '9':r'9',
         '256': r'256'} # notice this line is the first 3 digits of the resolution
    for k in escape_dict:
        if text.find(k) > -1:
            text = text.replace(k, escape_dict[k])
    return text

此函数会将任何被误解的特殊符号替换为其原始等效符号。

如果调用前面定义的,则会得到:

>>> raw(path)   
 'V:\PRODUCTIONS\SC_02\SHOT_310\compRender\main\v003\2560x1440_exr\SC_02_SHOT_310_Compositing_main_v003.1001.exr'

您必须根据需要手动添加更多分辨率值。

相关内容

  • 没有找到相关文章

最新更新