2012-02-09 426 views
1

我使用Maya來渲染我的漫畫,並且在用python編程時遇到了問題。 Maya給了我一個字符串變量,這是一個路徑,我想將它轉換爲規範化的路徑。但是,當談到'\ b'時,我完全沒有玩過它。這裏的問題:我想將字符串轉換在路徑如何將python字符串(包括' b')轉換爲原始字符串?

,其值看起來像 'd:\筆記本\ BOT' 到 'd /筆記本/ BOT':

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

的輸出是:

D/notebook/x08ot 
D/newworld 

請參閱\ n已正確打印爲/ n,但\ b正在轉義爲/ x08。 我怎樣才能達到我想要的?注:我無法格式化輸入路徑,如下所示:

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

因爲它是從Maya傳遞的。 Python版本是2.6。

+1

如果他們真的是從瑪雅通過像那麼他們在源斷裂,有解決它沒有可靠的方法。 – 2012-02-09 05:29:16

+1

您是如何從Maya中獲得字符串的?如您在第一個代碼示例中所做的那樣聲明字符串將自動導致將'\ b'轉換爲'\ x08'。 – kevintodisco 2012-02-09 05:36:16

+1

我假設你的意思是路徑應該是D:筆記本電腦機器人,D:新世界嗎? – peterept 2012-02-09 05:45:08

回答

0

如果您的MAYA文件是.MA(Maya Ascii),您可以在文本編輯器中打開它們並手動搜索並替換路徑。

或者,做編程方式使用瑪雅的perl外:

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

我想出瞭解決辦法就是使用重新模塊,使所有的字符串「原始」的字符串。有關原始字符串的詳細信息請查看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) 
0

我的解決方法解決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) 

演示:

>>> 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' 
相關問題