2012-05-14 10 views
6

मेरे पास निम्न स्ट्रिंगअजगर कैसे() re.sub साथ बैकस्लैश को बदलने के लिए

mystr1 = 'mydirname' 
myfile = 'mydirname\myfilename' 

मैं मैं बैकस्लैश मैं कोशिश कर रहा हूँ कैसे बच कि यह

newstr = re.sub(mystr1 + "\","",myfile) 

करने के लिए कोशिश कर रहा हूँ mystr1 को concatenate करने के लिए?

+4

मुझे पता है कि यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन यदि संभव हो तो वहां भी न जाएं; सिस्टम-स्वतंत्र तरीके से पथों में हेरफेर करने के लिए 'os.path.join' और अन्य' os.path' फ़ंक्शंस का उपयोग करें। – Amadan

+0

@ अहमदन, आपके उत्तर के लिए धन्यवाद, लेकिन मैं किसी भी पथ में हेरफेर करने की कोशिश नहीं कर रहा हूं, मैं बस एक विशिष्ट फ़ाइल से सामग्री लेने की कोशिश कर रहा हूं (इसके लिए, मैं os.path का उपयोग कर रहा हूं) और फिर मैं छोटा कर रहा हूं मूल फ़ाइल नाम के अनुसार डेटा और जेएस var के रूप में रखकर। मैं सिर्फ जेएस var के लिए फ़ाइल नाम की स्ट्रिंग (जिसमें पूर्ण पथ शामिल है) में हेरफेर कर रहा हूं। – user838437

+0

मैंने सोचा कि आप जो कर रहे हैं वह लगभग 'os.path.basename (myfile) 'जैसा ही है। मेरी गलती। – Amadan

उत्तर

16

आप एक चौगुनी बैकस्लैश की जरूरत है:

newstr = re.sub(mystr1 + "\\\\", "", myfile) 

कारण: "\\\\": इस regex का वर्णन करने के \\

  • स्ट्रिंग:

    • Regex एक भी बैकस्लैश मैच के लिए।

    या आप, एक कच्चे स्ट्रिंग का उपयोग कर सकते हैं ताकि आप केवल एक डबल बैकस्लैश की जरूरत है: r"\\"

  • +0

    यह काम करता है, धन्यवाद। एक बार मैं जवाब स्वीकार कर दूंगा। – user838437

    +0

    मेरे पायथन 3.2 में नहीं (आर 32: 88445, 20 फरवरी 2011, 21:29:02) [एमएससी v.1500 32 बिट (इंटेल)] Win32 पर: '>>> विषय =" वें \ है: एक पथ ? "; re.sub ("[/ \\\:? \"] "," _ ", विषय) 'th_is_ a path_'' –

    +0

    है, लेकिन मैंने अभी देखा है कि केवल" \: "जैसे अज्ञात भागने के लिए जाता है। –

    0

    एक रेगुलर एक्सप्रेशन में, आप इसे के सामने एक बैकस्लैश रख कर किसी भी अन्य चरित्र की तरह एक बैकस्लैश बच सकते हैं । इसका मतलब है "\\" एक बैकस्लैश है।

    +0

    हां, लेकिन हम यहाँ स्ट्रिंग्स से निपट रहे हैं जिसमें * नियमित अभिव्यक्ति होती है। डबल एस्केपिंग नियम लागू होते हैं। –

    +0

    TEOUltimus: आपका उत्तर अधिकतर सही है ; समस्या सिर्फ थोड़ी गहरी थी। मैं इसे ऊपर उठाऊंगा, इसलिए यह -1 के बजाय 0 पर है। अगली बार प्रतिक्रिया का एक टुकड़ा: 'मैं पाइथन से नफरत करता हूं' टिप्पणी ऐसी चीज है जिसे स्टैक ओवरफ्लो पर सराहना नहीं की जाती है Stackoverflow ठोस उत्तरों के लिए है, मिट्टी slinging के लिए नहीं। –

    +0

    और हालांकि आप सोच सकते हैं कि आर "\" आपको "\\" जैसा ही होगा, जैसा कि "\\" है \\\\ ", आप ' घ गलत हो ... आपके पास एक भी नहीं हो सकता \: पी – mpag

    संबंधित मुद्दे