如何将python字符串(包括'\b')转换为原始字符串?

2024-09-28 21:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Maya来渲染我的卡通,在用python编程时遇到了一个问题。 Maya给了我一个字符串变量,它是一个路径,我想把它转换成一个规范化的路径。但是,说到'\b',我完全没能玩它。问题是:

我想将路径中的值类似于“D:\notebook\bot”的字符串转换为“D/notebook/bot”:

paths = ['D:\notebook\bot', 'D:\newworld']
for p in paths:
    p = '{0!r}'.format(p).replace('\\', '/').replace(':','')
    print p

输出为:

^{pr2}$

请参阅,\n正确地打印为/n,但是,\b被转义为/x08。 我怎样才能达到我想要的?注意:我不能将输入路径格式化为:

paths = [r'D:\notebook\bot', r'D:\newworld']

因为它是从玛雅传来的。 Python版本是2.6。在


Tags: 字符串in路径formatforbot编程规范化
3条回答

我想出的答案是使用re模块,并使所有字符串“原始”字符串。有关原始字符串的详细信息,请查看http://docs.python.org/reference/lexical_analysis.html

import re

paths = [r'D:\notebook\bot', r'D:\newworld']

for p in paths:
    result = re.sub(r':?\\', "/", p)
    print(result)

如果MAYA文件是.MA(MAYA Ascii),则可以在文本编辑器中打开这些文件,然后手动搜索和替换路径。在

或者,在Maya外部使用perl以编程方式执行此操作:

perl -pi -e 's/\Qold-path\E/\Qnew-path\E/g' Your.MA

我的解决方法是将str转换为原始字符串(将字符串中的控制字符转换为原始转义序列表示)。与“\a”、“b”、“f”、“n”、“r”、“t”、“v”一起使用。所有转义序列的列表是here。在

def str_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'}
    return r''.join(i if ord(i) > 32 else raw_map.get(ord(i), i) for i in s)

演示:

^{pr2}$

相关问题 更多 >